在 Sails.js 后端项目中访问上传的图片

Access uploaded image in Sails.js backend project

我正在尝试上传然后访问图像。上传进行得很顺利,正在将图片上传到 assets/images,但是当我尝试从浏览器访问图片时,比如 http://localhost:1337/images/image-name.jpg,它给了我 404。我只将 Sails.js 用于后端目的 -对于 API 并且项目是使用 --no-front-end 选项创建的。我的前端在 AngularJS.

我的上传功能:

avatarUpload: function(req, res) {
    req.file('avatar').upload({
        // don't allow the total upload size to exceed ~10MB
        maxBytes: 10000000,
        dirname: '../../assets/images'
    }, function whenDone(err, uploadedFiles) {
        console.log(uploadedFiles);
        if (err) {

            return res.negotiate(err);
        }

        // If no files were uploaded, respond with an error.
        if (uploadedFiles.length === 0) {

            return res.badRequest('No file was uploaded');
        }

        // Save the "fd" and the url where the avatar for a user can be accessed
        User
            .update(req.userId, {

                // Generate a unique URL where the avatar can be downloaded.
                avatarUrl: require('util').format('%s/user/avatar/%s', sails.getBaseUrl(), req.userId),

                // Grab the first file and use it's `fd` (file descriptor)
                avatarFd: uploadedFiles[0].fd
            })
            .exec(function (err){
                if (err) return res.negotiate(err);
                return res.ok();
            });
    });
}

我在 assets/images 文件夹中看到图像 - 类似这样 - 54cd1fc5-89e8-477d-84e4-dd5fd048abc0.jpg

http://localhost:1337/assets/images/54cd1fc5-89e8-477d-84e4-dd5fd048abc0.jpg - 给出 404

http://localhost:1337/images/54cd1fc5-89e8-477d-84e4-dd5fd048abc0.jpg - 给出 404

发生这种情况是因为您的应用程序访问的资源不是直接从 assets 目录访问的,而是从项目根目录中的 .tmp 目录访问的。

升帆时资产被复制到 .tmp 目录,因此 .tmp 中不存在升帆后添加的任何内容。

我通常做的是上传到 .tmp 并在完成后 copy 将文件上传到 assets。这样 assets 就不会受到污染,以防因任何原因上传失败。

让我们知道这是否可行。祝你好运!

更新 为此找到了相关 link