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

时间:2015-07-02 12:58:41

标签: node.js http-status-code-404 sails.js assets image-uploading

我正在尝试上传然后访问图片。上传进展顺利,将图片上传到资源/图片,但是当我尝试从浏览器访问图像时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

1 个答案:

答案 0 :(得分:5)

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

当帆被抬起时,资产会被复制到.tmp目录,因此在.tmp之后,升力后添加的任何内容都不会出现。

我通常会在完成后将文件上传到.tmpcopyassets。这种方式assets不会因任何原因导致上传失败而受到污染。

如果有效,请告诉我们。祝你好运!

<强>更新 找到了相关的link