在 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 数据库中存储文件
使用 Parse Cloud 代码将文件保存在 Heroku 文件系统中?