【问题标题】:Save Image URL to the User in SailsJS在 SailsJS 中将图像 URL 保存到用户
【发布时间】:2018-11-29 01:29:36
【问题描述】:

我正在使用 Sails JS v1.0.0 创建一个 api

我有一个将图像上传到服务器的操作,它运行良好,但我遇到的问题是我想将图像 URL 保存给上传图像的用户。这是用户个人资料图片。

代码似乎可以正常工作,但上传图像后我在终端出现错误。我猜它与回调有关。

这是我的控制器:

let fs = require('fs');

module.exports = {

    upload : async function(req, res) {
      req.file('image').upload({ dirname : process.cwd() + '/assets/images/profile' }, function(err, uploadedImage) {
        if (err) return res.negotiate(err);
        let filename = uploadedImage[0].fd.substring(uploadedImage[0].fd.lastIndexOf('/')+1);
        let uploadLocation = process.cwd() +'/assets/images/uploads/' + filename;
        let tempLocation = process.cwd() + '/.tmp/public/images/uploads/' + filename;
        fs.createReadStream(uploadLocation).pipe(fs.createWriteStream(tempLocation));
        res.json({ files : uploadedImage[0].fd.split('assets/')[1] })
      })
    }

};

关于 .tmp 文件夹的读取流,我写它是为了使图像在上传的那一刻可用。

我试图在

之前查询用户
res.json({ files : uploadedImage[0].fd.split('assets/')[1] })

行,但它在终端中给我一个错误。

实现此代码的最佳方式是什么?

User.update({ id : req.body.id }).set({ image : uploadedImage[0].fd.split('images/')[1] });

【问题讨论】:

  • 您在终端中收到的错误信息是什么?
  • 如果我在上传回调中使用了'async',然后使用'await'更新了用户,我得到以下错误:错误:ENOENT:没有这样的文件或目录,打开'/Users/Haboosh/ Desktop/dental/dental-server/assets/images/uploads/0aab9fbb-5419-4787-851e-4469c419a27d.jpg' [nodemon] 应用程序崩溃 - 在开始之前等待文件更改... @MjZac

标签: javascript node.js sails.js sails-mongo sails-skipper


【解决方案1】:

您正在将图像上传到“/assets/images/profile”并尝试从“/assets/images/uploads/”中获取它。 tempLocation 变量中的路径也错误。将您的代码更改为以下代码,它有望开始工作

upload : async function(req, res) {
  req.file('image').upload({ dirname : process.cwd() + '/assets/images/profile' },
  async function(err, uploadedImage) {
  if (err) return res.negotiate(err);
  let filename = uploadedImage[0].fd.substring(uploadedImage[0].fd.lastIndexOf('/')+1);
  let uploadLocation = process.cwd() +'/assets/images/profile/' + filename;
  let tempLocation = process.cwd() + '/.tmp/public/images/profile/' + filename;
  fs.createReadStream(uploadLocation).pipe(fs.createWriteStream(tempLocation));

  await User.update({ id : req.body.id }).set({ image : uploadedImage[0].fd.split('images/')[1] });

  res.json({ files : uploadedImage[0].fd.split('assets/')[1] })
})
},

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 2021-03-14
    • 2011-12-04
    相关资源
    最近更新 更多