使用Fastify multer上传图像时出错

时间:2019-06-28 12:30:17

标签: javascript node.js rest multer fastify

我正在尝试使用fastify-multer插件将文件上传到服务器,并且能够成功将图像上传到该文件夹​​。 问题是我的应用程序崩溃了。 我使用了fastify-cli生成的结构,并将其作为独立服务器运行,如README.md here中所述。

我正在将其编写为Fastify插件。

"use strict";

const fp = require("fastify-plugin");

module.exports = fp(function(fastify, opts, next) {
  fastify.decorate("uploadImage", function(request) {
    const path = require("path");
    const multer = require("fastify-multer");

    var storage = multer.diskStorage({
      destination: path.join(path.join(__dirname + "/uploads/")),
      filename: function(request, file, cb) {
        cb(null, file.originalname);
      }
    });

    var upload = multer({ storage }).single("myImage");
    upload(request, function(err) {
      if (err) {
        console.log(err);
      } else {
        console.log("Saved...");
        return { saved: true };
      }
    });
  });
  next();
});

这是我得到的错误: enter image description here

1 个答案:

答案 0 :(得分:0)

您好,您调查了您的问题。您以错误的方式使用了fastify-multer。 调用multer({ storage }).single("myImage")将创建一个fastify的preHandler挂钩,该挂钩接受3个特定参数。您可以在offical documentation上找到更多信息。您可以在fastify-multer看到一个简单的工作示例:

const server = fastify()
// register fastify content parser
server.register(multer.contentParser)

server.route({
  method: 'POST',
  url: '/profile',
  preHandler: upload.single('avatar'),
  handler: function(request, reply) {
    // request.file is the `avatar` file
    // request.body will hold the text fields, if there were any
    reply.code(200).send('SUCCESS')
  }
})

如果您需要更多帮助,只需在github上为我提供一个repro repo,我将尝试找出最适合您的情况的解决方案。

让我知道! :)