2017-01-31 21 views
0

我有一個已部署到Azure的M(ySQL)EAN堆棧應用程序。應用程序應允許用戶上傳內容(包括doc文件,圖像,音頻等)。如何在Azure Web應用程序中將本地文件發送到遠程服務器

在我的快遞路線的後端,當用戶上傳的內容我用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虛擬機上安裝sftp服務器。如果它可以幫助我所有的網絡應用程序正在利用Azure's Shared App Service Plan。我不是非常後端的頭腦,所以任何幫助理解這一點,表示讚賞!

回答

0

而不是創建sFTP服務器,我建議您嘗試利用Azure Blob存儲來實現您的要求。例如,用戶可以將非結構化對象數據(如文本或二進制數據)上傳到您的應用中的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

+0

Gotcha。我使用這種替代方式來存儲blob,直到我可以使用Azure提供的Blob存儲選項。我也想盡快完成並運行。在Azure Web App中創建sFTP服務器是否可行?現在看來並不是這樣。 –

+0

你有沒有收到任何錯誤訊息? –

+0

不,我使用節點調試器添加了一個斷點,並且在應用程序日誌中沒有收到任何錯誤。 –

相關問題