0

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

我把它写成一个 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();
});

这是我得到的错误: 在此处输入图像描述

4

1 回答 1

2

嗨调查了你的问题。您以错误的方式使用 fastify-multer。调用multer({ storage }).single("myImage")你正在创建一个接受 3 个特定参数的 fastify 的 preHandler 钩子。您可以在官方文档中找到更多信息。你可以在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,我将尝试找出最适合您的情况的解决方案。

让我知道!:)

于 2019-06-29T15:23:50.197 回答