我正在使用我发现here的教程来帮助我找出SailsJS中的文件上传。在Sails中使用.ejs模板引擎时,我能够使上传工作正常,但我需要上传文件才能使用RESTapi。我设置的网址是“http://localhost:1337/file/upload”,我使用Postman Chrome应用程序将文件发送到服务器,但我得到的回复是:
{
"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 :(得分:0)
我也这样做。因为我的情况并且有效;
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);
});
}
答案 1 :(得分:0)
为了关闭它,所以它可能会帮助其他人,Postman导致了这个问题 - 一旦我升级到最新版本,一切都按预期工作。