获取Sails.JS中上传图像的下载网址

Get download url of Uploaded image in Sails.JS

本文关键字:图像 下载网址 Sails JS 获取      更新时间:2023-09-26

我正在 Sails 中开发一个 API.js我需要通过 api 将图像上传到服务器并获取该上传图像的 url 以供以后从移动应用程序使用。为此,我的上传代码如下

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"
}

如果我像这样用我的本地主机附加路径

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。

谁能建议我如何解决这个问题?

似乎您有一个grunt问题。http://example.com/images/中提供的文件实际上是在 .tmp/public/images/中,并且一个繁琐的任务正在将资产文件夹与 tmp 文件夹同步。

尝试在项目文件夹中运行grunt命令,如果不起作用,请尝试npm install grunt有时全局 npm 安装的 grunt 不起作用。

还要确保 grunt 可以写入文件夹.tmp ;)

这是另外两个可能会有所帮助的帖子https://stackoverflow.com/a/20363247/4322950https://stackoverflow.com/a/20340354/4322950