gpt4 book ai didi

sails.js - 在sails.js 中上传后图像未立即显示

转载 作者:行者123 更新时间:2023-12-04 15:11:30 24 4
gpt4 key购买 nike

在我的应用程序中,我已将上传的图像存储到文件夹 ./assets/uploads。我正在使用 easyimage 和 imagemagick 来存储图像。

在我的应用程序中,上传图片后,它应该显示新上传的图片。但是即使刷新页面也不会显示。但是当我做起 sails 时,图像就会显示出来。

上传图片后如何立即显示图片?非常感谢!

最佳答案

虽然这个问题已经很老了,但我想添加一个我刚刚实现的解决方案。

今天我花了将近 4 个小时尝试所有这些解决方案。 但没有一个帮助。 我希望这个解决方案能节省别人的时间。

为什么图片在上传到任何自定义目录后无法立即使用?

Because according to the default Sails setup, you can not access assets directly from the assets directory. Instead you have to access the existing assets that is brought to .tmp/public directory by Grunt at time of sails lift ing



问题
  • (可用但不稳定)如果您在 内的任何位置上传文件(比如图片) .tmp/public
    目录,您的文件(图像)将在下一个 sails lift 删除
  • (不可用)如果您在任何其他自定义目录中上传文件 - 比如说:./assets/images ,上传的文件将不会立即可用,而是在下一个 sails lift它将可用。这没有任何意义,因为 - 每次文件在生产中上传时都无法重新启动服务器。

  • 我的解决方案 (假设我想将我的图片上传到 ./assets/images 目录)
  • 上传文件说 image.ext ./tmp/public/images/image.ext (可用且易变)
  • 上传完成后复制文件 image.ext ./assets/images/*file.ext (面向 future )

  • 代码
    var uploadToDir = '../public/images'; 
    req.file("incoming_file").upload({
    saveAs:function(file, cb) {
    cb(null,uploadToDir+'/'+file.filename);
    }
    },function whenDone(err,files){
    if (err) return res.serverError(err);
    if( files.length > 0 ){

    var ImagesDirArr = __dirname.split('/'); // path to this controller
    ImagesDirArr.pop();
    ImagesDirArr.pop();

    var path = ImagesDirArr.join('/'); // path to root of the project
    var _src = files[0].fd // path of the uploaded file

    // the destination path
    var _dest = path+'/assets/images/'+files[0].filename

    // not preferred but fastest way of copying file
    fs.createReadStream(_src).pipe(fs.createWriteStream(_dest));
    return res.json({msg:"File saved", data: files});
    }
    });

    我根本不喜欢这个解决方案,但它节省了我更多的时间,并且在开发和产品 ENV 中都能完美运行。

    谢谢

    关于sails.js - 在sails.js 中上传后图像未立即显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22450795/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com