[node.js] sftp上传文件
<h1>前言</h1><p>前端工作中我们经常需要把静态文件上传到服务器,这次在公司大佬写的文件中,我发现了一个很有趣的东西,在项目打包的时候自动上传服务器,细看一下其实就是用js写了一个脚本用node.js上传上去了,话不多说,直接上代码。</p>
<h1>代码</h1>
<div class="cnblogs_code">
<pre>const path = require('path'<span style="color: rgba(0, 0, 0, 1)">);
const Client </span>= require('ssh2-sftp-client'<span style="color: rgba(0, 0, 0, 1)">);
const sftp </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Client();
const config </span>=<span style="color: rgba(0, 0, 0, 1)"> {
host: </span>'127.0.0.1'<span style="color: rgba(0, 0, 0, 1)">,
port: </span>'299'<span style="color: rgba(0, 0, 0, 1)">,
username: </span>'admin'<span style="color: rgba(0, 0, 0, 1)">,
password: </span>'123456'<span style="color: rgba(0, 0, 0, 1)">
}
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*
* 上传文件到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页面
</span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> upload(config, options) {
sftp.connect(config).then(() </span>=><span style="color: rgba(0, 0, 0, 1)"> {
console.log(</span>'sftp链接成功'<span style="color: rgba(0, 0, 0, 1)">);
console.log(</span>'文件上传中'<span style="color: rgba(0, 0, 0, 1)">);
</span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> sftp.uploadDir(options.localStatic, options.remoteStatic);
}).then((data) </span>=><span style="color: rgba(0, 0, 0, 1)"> {
console.log(</span>'文件上传成功'<span style="color: rgba(0, 0, 0, 1)">);
sftp.end();
}).</span><span style="color: rgba(0, 0, 255, 1)">catch</span>((err) =><span style="color: rgba(0, 0, 0, 1)"> {
console.log(</span>'上传失败'<span style="color: rgba(0, 0, 0, 1)">, err);
sftp.end();
})
}
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 上传文件</span>
<span style="color: rgba(0, 0, 0, 1)">upload(config, {
localStatic: path.resolve(__dirname, </span>'./upload'), <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 本地文件夹路径</span>
remoteStatic: '/demo', <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 服务器文件夹路径器</span>
})</pre>
</div>
<p>这里的我用本地生成的sftp进行测试,实际项目中只需要对上传文件进行对应操作就好</p>
<div>
<div>sh2-sftp-client 实例中还有很多方法,上传也有对应的回调,如果需要展示进度只要输出对应数据即可。</div>
</div>
<h1>测试</h1>
<p>很简单的操作就直接下载<span style="font-family: "Courier New"; font-size: 12px">ssh2-sftp-client引入依赖,然后就可以上传sftp,这里附上windows创建sftp的教程供大家测试</span></p>
<h2><span style="font-family: "Courier New"; font-size: 12px">下载</span></h2>
<h2><span style="font-family: "Courier New"; font-size: 12px"> freeSSHd </span></h2>
<h2><span style="font-family: "Courier New"; font-size: 12px">配置sftp</span></h2>
<p><span style="font-family: "Courier New"; font-size: 12px"><img src="https://img2020.cnblogs.com/blog/2114047/202008/2114047-20200814181403896-839303357.png"></span></p>
<p><img src="https://img2020.cnblogs.com/blog/2114047/202008/2114047-20200814181523298-549201290.png"></p>
<p>然后可以用xftp测试一下能否连接,连接成功就可以直接测试上传了。</p>
<h1>webpack项目中的应用</h1>
<p>直接在package.json中的脚本中配置操作即可,链接到你的js文件</p>
<p><img src="https://img2020.cnblogs.com/blog/2114047/202008/2114047-20200814184141860-1101004602.png"></p>
<p> </p>
<p> 然后运行即可,我好了,你呢</p>
<p><img src="https://img2020.cnblogs.com/blog/2114047/202008/2114047-20200814184229052-667443836.png"></p>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
前端远比想象中的还要复杂,需要学习的还有很多,脚踏实地记录好遇到的麻烦与经验,三省吾身,才能慢慢积累经验。<br><br>
来源:https://www.cnblogs.com/re-saika/p/13503887.html
頁:
[1]