(NestJS)如何更改上传文件的名称?

时间:2019-01-28 06:56:04

标签: typescript nestjs

我正在使用nestjs库上传文件,但是此文件存储时没有文件扩展名

@Post('upload')
@UseInterceptors(
  FilesInterceptor('files', 6, {
    dest: 'images',
    fileFilter: (req, file, cb) => {
      file.filename = Date.now() + '-' +file.originalname ;
      cb(null, true);
    },
  })

)
uploadFile(
  @UploadedFiles() files
){
  console.log(files);
}

1 个答案:

答案 0 :(得分:3)

@罗宾逊 - 奥尔蒂斯,您可以检查哪些呢咕需要选择,从文档:multer:diskstorage这样说的:

filename,可用于设置文件名在磁盘上的回调,尝试:

  filename: function (req, file, cb) {
    console.log(file);
    cb(null, file.fieldname + '-' + Date.now())
  }

你会看到有哪些字段可用于您确定如何存储在磁盘上的文件。

但是从我的经验来看,最好的方法是将其作为元数据存储在DB中,并将文件作为“某些文件”存储在磁盘上,没有任何扩展名,甚至没有暗示其含义的名称。铁:使用node-uuidv4功能

为什么?因为它不产生任何存储地狱,怎么样对不同的用户可能会上传文件名相同,但有完全不同的内容。但这仍然取决于您要实现的目标,当您按子文件夹划分存储空间时,这可能永远不会发生,但是当您将所有内容存储在同一位置时(例如,将所有内容存储在S3上的一个存储桶中),则可能会发生。

现在,一个文件夹中的文件限制非常大,您甚至无需考虑。

致谢。