Node.js 如何在azure web app中将本地文件发送到远程服务器

Node.js 如何在azure web app中将本地文件发送到远程服务器,node.js,azure,express,sftp,Node.js,Azure,Express,Sftp,我有一个已部署到Azure的M(ySQL)EAN堆栈应用程序。应用程序应允许用户上传内容(包括文档文件、图像、音频等) 在我的express route的后端,当用户上载内容时,我使用模块将本地文件发送到远程服务器进行存储,如下所示: var AsyncClient = require('promise-sftp'); var sftp = new AsynClient(); sftp.connect(options).then(function (serverMsg) { cons

我有一个已部署到Azure的M(ySQL)EAN堆栈应用程序。应用程序应允许用户上传内容(包括文档文件、图像、音频等)

在我的express route的后端,当用户上载内容时,我使用模块将本地文件发送到远程服务器进行存储,如下所示:

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服务器。如果有帮助的话,我的web应用程序正在使用。我不是很精通后端,所以任何理解这一点的帮助都是非常感谢的

我建议您尝试利用Azure Blob存储来满足您的需求,而不是创建sFTP服务器。例如,用户将非结构化对象数据(如文本或二进制数据)上载到应用程序中的Azure存储,然后将Blob的URL设置为MySQL数据库,然后可以通过HTTP或HTTPS从世界任何地方访问该文件

关于如何使用Node.js中的Blob存储,请参阅


此外,您还可以参考Github上的示例。

Gotcha。在我能够负担得起使用Azure提供的Blob存储选项之前,我一直在使用这种替代方法来存储Blob。我还想尽快启动并运行它。在Azure Web应用程序中创建sFTP服务器是可以实现的吗?现在看来不是这样的。我使用节点调试器添加了一个断点,没有收到任何错误,应用程序日志中也没有任何错误。