【问题标题】:How to send local file to remote server in azure web app如何在 azure Web 应用程序中将本地文件发送到远程服务器
【发布时间】: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


    【解决方案1】:

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

    关于如何从 Node.js 使用 Blob 存储,请参考https://docs.microsoft.com/en-us/azure/storage/storage-nodejs-how-to-use-blob-storage

    另外,您可以参考 Github 上的示例https://github.com/Azure-Samples/storage-blob-node-getting-started

    【讨论】:

    • 明白了。在我负担得起使用 Azure 提供的 Blob 存储选项之前,我一直在使用这种替代方式来存储 Blob。我也想尽快启动并运行它。在 Azure Web App 中创建 sFTP 服务器是否可以实现?现在看来不是这样。
    • 没有。我使用节点调试器添加了一个断点,没有收到任何错误,应用程序日志中也没有任何错误。
    猜你喜欢
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    相关资源
    最近更新 更多