我正在使用Sails.js中的Api,我需要通过api将图像上传到服务器并获取上传图像的URL以供以后从Mobile App使用。为此,我的上传代码如下
upload: function (req, res) {
var uploadPath = '../../assets/images' ;
req.file('avatar').upload({ dirname: uploadPath },function onUploadComplete (err, files) {
if (err) {
return res.serverError(err);
} else {
var image = files[0];
var fd = image.fd ;
var index = fd.lastIndexOf('/');
var imageName = fd.substring(index+1 , fd.length);
return res.json({ image : '/images/' + imageName });
}
});
}
这给我的结果如下......
{
"image": "/images/bc4f03ec-0d9c-4553-b59a-9ddec427a265.jpg"
}
如果我使用我的localhost附加路径
http://localhost:1337/images/bc4f03ec-0d9c-4553-b59a-9ddec427a265.jpg
它工作正常,图像正在浏览器中加载。但是当我将我的应用程序部署到生产服务器时,它无法正常工作并给我404错误。
为了解决这个问题,我已经编写了另一个这样的get动作
download: function (req, res) {
res.sendfile(req.path.substr(1));
},
其中/ routes条目是
'get /images/*' : {
controller : 'FileController',
action : 'download'
}
但那没有帮助,我在localhost获得了404。
任何人都可以建议我如何解决这个问题?
答案 0 :(得分:1)
您似乎遇到grunt
问题。您http://example.com/images/中提供的文件实际上位于.tmp / public / images /中,而grunt任务正在将资产文件夹与tmp文件夹同步。
尝试在项目文件夹中运行grunt
命令,如果不起作用尝试npm install grunt
有时全局npm安装的grunt不起作用。
还要确保grunt可以写入文件夹.tmp
;)
这是另外两个可能有帮助的帖子 https://stackoverflow.com/a/20363247/4322950 https://stackoverflow.com/a/20340354/4322950