[node.js] sftp上傳文件


前言

前端工作中我們經常需要把靜態文件上傳到服務器,這次在公司大佬寫的文件中,我發現了一個很有趣的東西,在項目打包的時候自動上傳服務器,細看一下其實就是用js寫了一個腳本用node.js上傳上去了,話不多說,直接上代碼。

代碼

const path = require('path');
const Client = require('ssh2-sftp-client');
const sftp = new Client();

const config = {
  host: '127.0.0.1',
  port: '299',
  username: 'admin',
  password: '123456'
}

/**
 * 上傳文件到sftp
 * @param { Object } config    sftp 鏈接配置參數
 * @param { String } config.host sftp 主機地址
 * @param { String } config.port sftp 端口號
 * @param { String } config.username sftp 用戶名
 * @param { String } config.password sftp 密碼
 * 
 * @param { Object } options 配置參數
 * @param { String } localStatic // 本地靜態資源文件夾路徑
 * @param { String } remoteStatic // 服務器靜態資源文件夾路徑
 * @param { String } localFile // 本地html頁面
 * @param { String } remoteFile // 服務器html頁面
 */
function upload(config, options) {
  sftp.connect(config).then(() => {
    console.log('sftp鏈接成功');
    console.log('文件上傳中');
    return sftp.uploadDir(options.localStatic, options.remoteStatic);
  }).then((data) => {
    console.log('文件上傳成功');
    sftp.end();
  }).catch((err) => {
    console.log('上傳失敗', err);
    sftp.end();
  })
}

// 上傳文件
upload(config, {
  localStatic: path.resolve(__dirname, './upload'), // 本地文件夾路徑
  remoteStatic: '/demo', // 服務器文件夾路徑器
})

這里的我用本地生成的sftp進行測試,實際項目中只需要對上傳文件進行對應操作就好

sh2-sftp-client 實例中還有很多方法,上傳也有對應的回調,如果需要展示進度只要輸出對應數據即可。

測試

很簡單的操作就直接下載ssh2-sftp-client引入依賴,然后就可以上傳sftp,這里附上windows創建sftp的教程供大家測試

下載

 freeSSHd 

配置sftp

然后可以用xftp測試一下能否連接,連接成功就可以直接測試上傳了。

webpack項目中的應用

直接在package.json中的腳本中配置操作即可,鏈接到你的js文件

 

 然后運行即可,我好了,你呢

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM