在 Nestjs 的文件系统中保存文件

Posted

技术标签:

【中文标题】在 Nestjs 的文件系统中保存文件【英文标题】:Saving files in file system in Nestjs 【发布时间】:2020-08-09 13:03:56 【问题描述】:

我想将使用multipart/form-data从客户端发送的图像的URL存储在我的mysql数据库中。我关注了文档,但我真的不知道应该如何在服务器文件系统中保存图像并将 URL 返回给客户端。

这是我的代码:

@ApiTags('product-image')
@Controller('product-image')
export class ProductImageController 
  constructor(public service: ProductImageService) 
  

  @Post('upload')
  @UseInterceptors(FilesInterceptor('files'))
  uploadImage(@UploadedFiles() files) 
    console.log(files);
    // How can I save image files in
    // a custom path and return the path
    // back to the client?

  

【问题讨论】:

【参考方案1】:

试试这个

import  FilesInterceptor  from '@nestjs/platform-express';
import  diskStorage  from 'multer';

@Post('upload')
    @UseInterceptors(
        FilesInterceptor('files', 20, 
          storage: diskStorage(
            destination: './uploads/',
            filename: editFileName,
          ),
        //   fileFilter: imageFileFilter,
        ),
      )
      uploadMultipleFiles(@UploadedFiles() files) 
        const response = [];
        files.forEach(file => 
          const fileReponse = 
            filename: file.filename,
          ;
          response.push(fileReponse);
        );
        return response;
      

【讨论】:

不过还有一个问题:如何将图像返回给客户端?在express中,我们一般都是res.end(),在nestjs中怎么返回图片呢? @Get('image/:imgpath') seeUploadedFile(@Param('imgpath') image, @Res() res) return res.sendFile(image, root: './uploads ' );

以上是关于在 Nestjs 的文件系统中保存文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 NestJS 在 PostgreSQL 数据库中存储文件

保存系统不打开 fstream 文件?

使用 Parse Cloud 代码将文件保存在 Heroku 文件系统中?

XML 保存在文件系统上不起作用

cdlinux系统 重启后所保存的文件都消失了,怎么回事,如何解决?

从 iOS 文件系统中的 UIImagePickerController 保存和删除图像