欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

如何使用 Nest.js 上传文件并以自定义文件名保存文件

最编程 2024-03-02 22:55:00
...

安装依赖:首先,确保已安装 multer@nestjs/platform-express 依赖。

npm install --save multer @nestjs/platform-express

创建文件上传控制器:在适当的位置创建一个文件上传的控制器,并使用 @UseInterceptors 装饰器将 FileInterceptor 应用到指定的路由处理程序上。

import{
    Controller, Post, UploadedFile, UseInterceptors }from'@nestjs/common';import{
    FileInterceptor }from'@nestjs/platform-express';import{
    diskStorage }from'multer';import{
    extname }from'path';

@Controller('upload')exportclassUploadController{
   
  @Post()
  @UseInterceptors(FileInterceptor('file',{
   
      storage:diskStorage({
   
        destination:'./uploads',
        filename:(req, file, cb)=>{
   const uniqueSuffix = Date.now()+'-'+ Math.round(Math.random()*1E9);const fileExtension =extname(file.originalname);cb(null,`${file.fieldname}-${uniqueSuffix}${
     fileExtension}`);},}),}),)uploadFile(@UploadedFile() file: Express.Multer.File){
   // 处理上传文件
    console.log(file);}}

在上面的示例中,我们使用 FileInterceptor 拦截器来处理文件上传,同时使用 diskStorage 存储引擎自定义文件存储位置和文件名。在 filename 方法中,我们生成一个带有时间戳和随机数的唯一文件名。

定义上传路径:确保创建一个合适的文件夹(例如 uploads)来保存上传的文件。在上述代码中,我们使用 destination 属性指定存储位置为 ./uploads。

调试文件上传:运行你的 Nest.js 应用程序,并通过 POST 请求将文件上传到 /upload 路由。

现在,当你上传文件时,它将被存储在指定的文件夹中,并以自定义的文件名进行保存。

推荐阅读