2017-01-31 1 views
0

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을 사용합니다. 나는이 지식을 이해하는 데 도움이 될 정도로 정통한 백엔드가 아닙니다!

답변

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. Azure에서 제공하는 BLOB 저장소 옵션을 사용할 여력이있을 때까지 BLOB를 저장하는 대신이 대체 방법을 사용했습니다. 나는 또한 이것을 얻고 최대한 빨리 달리고 싶다. Azure Web App에서 sFTP 서버를 만들 수 있습니까? 지금은 그렇게 보이지 않습니다. –

+0

오류 메시지가 나타 났습니까? –

+0

아니요. 노드 디버거를 사용하여 중단 점을 추가했으며 오류가 발생하지 않았으며 응용 프로그램 로그에 중단 점이 없었습니다. –

관련 문제