javascript - 如何使用 Multer 磁盘存储选项(NodeJs)读取存储的文件?

标签 javascript node.js angular typescript multer

我能够使用 multer 成功地将图像存储在我的本地磁盘存储中,但是在使用 GET 方法时,它会抛出“Cannot GET/uploads/image-1547436792386”错误。我在下面提供了我的 image-upload.js 代码:

const multer  = require('multer');

const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'uploads/');
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now());
  }
});

const upload = multer({ storage: storage });

module.exports = upload;

服务.ts:

const imageUpload = require('../services/image-upload');
const singleUpload = imageUpload.single('image');

module.exports = function(app) {
   app.post('/api/image-upload', auth.jwtRefreshToken, imageUploadRoute);
};

function imageUploadRoute(req, res) {
  const userId = req.userId;
  if (typeof userId !== 'string') {
    return res.status(422).json({message: 'Error in UserId'});
  }
  singleUpload(req, res, function(err) {
    if (err) {
      return res.status(422).send({errors: [{title: 'Image Upload error', detail: err.message}]});
    }
    User.findOne({_id: userId})
        .then((user) => {
          console.log(req.file);
          user.profileImage = req.file.path;
          return user.save()
              .then(() => {
            return res.status(200).send({message: 'Image Uploaded Successfully'});
          })
          .catch(() => {
            return res.status(500).send({message: 'Error in uploading image'});
          });
    })
    .catch(() => {
      return res.status(500).send({message: 'UserId not found'});
    });
  });
}

最佳答案

您的 GET API 实现在哪里?无论如何,下面的代码可以让我下载文件。请试试这个。

app.get("/download/:name(*)", function (req, res, next) {

  var file = req.params.name;
  var path = '/yourFileLocation' + '/' + file;
  res.download(path, file, function (err) {
   if (err) {
     res.status(500).send({ "error": 'Unexpected error occured.' });
   } else {
     res.send({ "message": 'success' });
   }
  });
});

关于javascript - 如何使用 Multer 磁盘存储选项(NodeJs)读取存储的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54175525/

相关文章:

node.js - 如何将参数传递给 grunt browserify 转换 (hbsfy)?

javascript - 轮询卡住、Pebble.js、ajax、node.js

node.js - 如何为多运行时 AWS Lambda 服务设置 serverless.yml 和 webpack.config

angular - 将 Electron 集成到 Angular 项目时 fs 模块失败

javascript - 理解 TypeScript/Angular JS 中的定义顺序

javascript - 验证 angularjs 中的密码指令

javascript - WordPress 主页上的自定义 css 和 js

javascript - 将 onchange 事件监听器附加到文本区域

javascript - 如何避免IE中的滚动条?

angular - 从服务获取新值不会重新加载 View