2016-03-13 8 views
3

Я использую учебник, который я нашел here, чтобы помочь мне разобраться в загрузке файлов в SailsJS. Мне удалось загрузить загрузки, используя механизм шаблонов .ejs в Sails, но мне нужно, чтобы файлы загружались для работы с RESTapi. URL у меня есть установка «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

на бэкэнд вы получаете файл? Beacuse я думаю, что вы не получаете anyfile! Console.log (uploadFile); – vkstack

+0

убедитесь, что uploadFile.fieldName! == 'NOOP_file' !!!! означает, что shoul be 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

Смежные вопросы