为什么 multer 在我的配置 tsed、express、multer 上使用 png 和 jpg 但不能使用 webp?

问题描述 投票:0回答:0

我的端点适用于 png 和 jpg。 我只想允许 webp,所以我更改了文件过滤器回调,这样它就被允许了。 但是,除了 png 或 jpg 之外,它不起作用:没有错误,multer 发回一个对象,说它已成功将它保存在特定路径上,但在磁盘上什么也没有。

为什么?

这是我的配置对象(它特定于 tsed 框架,但我怀疑这会是问题所在,只是 express 之上的一个框架)> http://v4.tsed.io/tutorials/multer.html#installation

const storage = multer.diskStorage({
  destination: function (req: any, file: any, cb: any) {
    cb(null, './uploads')
  },
  filename: function (req: any, file: any, cb: any) {
      let extArray = file.mimetype.split("/");
      let extension = extArray[extArray.length - 1];
      cb(null, file.fieldname + '-' + uuidv4() + '.' +extension)
  }
})

  multer: {
    storage: storage,
    dest: `${process.cwd()}/uploads`,
    limits: {
      fileSize: 7340032,
    },
    fileFilter: (_req: any, file: any, cb: any) => {
        // there was some condition here to check mimetype and throw an error if needed but I removed it for testing with other mimetypes
        return cb(null, true);
    }
  }

我的端点看起来像这样:



  @Post("/photo")
  @Authorize("jwt") @Security("jwt")
  @Returns(200) 
  @Returns(401) 
  @Returns(404)
  private async simpleUpload(
    @MultipartFile("file") 
    file: PlatformMulterFile) {
    if (!file) {
      throw new NotFound('file not found');
    }
    console.log(file);
    return{filename : file.filename}
  }

我真的很困惑,因为我总是得到 200 响应,并且 console.log 输出如下所示:

{
  fieldname: 'file',
  originalname: 'pauline.pdf',
  encoding: '7bit',
  mimetype: 'application/pdf',
  destination: './uploads',
  filename: 'file-f6219302-1491-47f0-b10f-883fdc6ef15a.pdf',
  path: 'uploads/file-f6219302-1491-47f0-b10f-883fdc6ef15a.pdf',
  size: 12033
}


{
  fieldname: 'file',
  originalname: 'mouse_logo.svg',
  encoding: '7bit',
  mimetype: 'image/svg+xml',
  destination: './uploads',
  filename: 'file-138c1a1f-9b80-4f6c-b474-dfd25afaaf50.svg+xml',
  path: 'uploads/file-138c1a1f-9b80-4f6c-b474-dfd25afaaf50.svg+xml',
  size: 1076
}

在这两种情况下,都没有错误,但磁盘上也没有文件。使用完全相同的配置,上传 png 和 jpg 文件并显示文件。如果有人有线索,我会很感兴趣._.

express file-upload multer webp
© www.soinside.com 2019 - 2024. All rights reserved.