【发布时间】:2017-01-31 22:13:59
【问题描述】:
我有一个已部署到 Azure 的 M(ySQL)EAN 堆栈应用程序。应用程序应允许用户上传内容(包括 doc 文件、图像、音频等)。
在我的快速路由的后端,当用户上传内容时,我使用promise-sftp 模块将本地文件发送到远程服务器进行存储,如下所示:
var AsyncClient = require('promise-sftp');
var sftp = new AsynClient();
sftp.connect(options).then(function (serverMsg) {
console.log('sftp connected ... multer uploading');
// error handling for multer upload
upload(req, res, function (err) {
if(err)
return res.send(err);
var doc = {...} //create document object from req.files[0]
sftp.fastPut(doc.doc_storage_path, process.env.REMOTE_URL + doc.doc_file_name,{...}})
.then(function () {
//do something
return sftp.end(); //end sftp connection
});
//save file info to mysql db
...
});
当我在本地开发时这很好用,但是当我将它部署到 Azure 时它就不起作用了。文件保存到本地文件系统,文件信息保存到 MySQL 数据库,但发送到远程服务器永远不会发生。
我不确定是否需要在 Azure VM 上安装 sftp 服务器。如果它有帮助,我的网络应用程序正在使用Azure's Shared App Service Plan。我不是很精通后端,所以任何理解这一点的帮助表示赞赏!
【问题讨论】:
标签: node.js azure express sftp