2016-03-13 75 views
3

我正在使用教程,我發現here幫助我找出SailsJS中的文件上傳。在Sails中使用.ejs模板引擎時,我已經能夠獲得上傳文件,但我需要文件上傳才能與RESTapi配合使用。我已經設置了網址爲「http://localhost:1337/file/upload」,我使用的郵差鉻應用發送一個文件到服務器,但響應我得到的回覆是:SailsJS API文件上傳

{ 
    "status": 200, 
    "file": [] 
} 

當不使用API​​(內做.ejs模板)我得到以下回應:

{ 
    "status": 200, 
    "file": [ 
    { 
     "fd": "path/to/uploaded/file/.tmp/uploads/assets/images/18c60ef7-b176-4375-8789-e0f80de29cea.pdf", 
     "size": 48541, 
     "type": "application/pdf", 
     "filename": "file.pdf", 
     "status": "bufferingOrWriting", 
     "field": "uploadFile" 
    } 
    ] 
} 

我不確定問題出在哪裏,我沒有將文件傳遞給服務器?或者服務器在收到文件後沒有正確處理文件?

供參考,這是我的控制器代碼:

module.exports = { 
    upload: function (req, res) { 
     if(req.method === 'GET') 
      return res.json({'status':'GET not allowed'});      

     var uploadFile = req.file('uploadFile'); 
     uploadFile.upload({ dirname: 'assets/images'},function onUploadComplete (err, files) {    
      if (err) return res.serverError(err);        
      res.json({status:200,file:files}); 
     }); 
    }, 
}; 
+0

在後端你得到的文件??因爲我認爲你沒有得到anyfile!console.log(uploadFile); – vkstack

+0

確保uploadFile.fieldName!=='NOOP_file'!!!! 意味着它uploadFile.fieldName ==='uploadFile' – vkstack

+0

好吧,我安慰了'uploadFile',我得到'fieldName:'NOOP_uploadFile'',這是否意味着我沒有將文件傳遞到服務器?這可能是Postman中的一個設置嗎? – mcneela86

回答

0

在結束這個關閉,因此它可能會幫助別人的利益,郵差是造成問題 - 一旦我升級到最新版本的一切工作如預期。

0

我做同樣的way.for我的情況和它的作品;

upload: function (req, res) { 
    if(req.method === 'GET') 
     return res.negotiate(new Error('GET not allowed')); 
    var fileName; 
    try{ 
     fileName=req.file('uploadFile')._files[0].stream.headers['content-disposition'].split('"').reverse()[1]; 
    } 
    catch(e){ 
     fileName="abc.abc"; 
    } 
    req.file('uploadFile').upload({ 
     dirname:'../../tmp', 
     saveAs:fileName 
    },function onUploadComplete(err,files){ 
     if(err){ 
     console.log(err); 
     return res.serverError(err); 
     } 
     if(!files.length) { 
     return res.serverError(new Error('No file Uploaded')) 
     } 
     res.ok(files); 
    }); 
    } 

你可以看到這個.... So You can see that works for me