文件上传

时间:2025-03-03 13:53:17

nestjs文件上传

  • 文件上传
    • 单个文件上传
    • 多文件上传

文件上传

单个文件上传

// 1.依赖引入 UseInterceptors, UploadedFile, FileInterceptor
import { Controller, Get, Post, Render, Body, UseInterceptors, UploadedFile } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
// 3.将上传的图片放到某个文件夹
import { createWriteStream } from 'fs';
import { join } from 'path';

@Controller('upload')
export class UploadController {
    @Get() 
    @Render('default/upload')
    index(){}

    @Post('doAdd')
    // 2.使用
    // 注意:必须在form的属性中配置enctype="multipart/form-data"
    @UseInterceptors(FileInterceptor('pic')) // 配置上传图片的名称
    doAdd(@Body() body, @UploadedFile() file){
        ('文件: ', file);
        ('body: ', body);
        ('__dirname: ', __dirname);
        // 4.将上传的图片放到某个文件夹
        var writeStream = createWriteStream(join(__dirname, '../../public/upload', `${()}-${}`))
        ();
        return '上传图片成功';
    }
}

多文件上传

// 1.依赖引入 UseInterceptors, UploadedFiles, FilesInterceptor
import { Controller, Get, Post, Render, Body, UseInterceptors, UploadedFiles } from '@nestjs/common';
import { FilesInterceptor } from '@nestjs/platform-express';
// 3.将上传的图片放到某个文件夹
import { createWriteStream } from 'fs';
import { join } from 'path';

@Controller('uploadmany')
export class UploadmanyController {
    @Get() 
    @Render('default/uploadmany')
    index(){}

    @Post('doAdd')
    // 2.使用
    // 注意:必须在form的属性中配置enctype="multipart/form-data"
    @UseInterceptors(FilesInterceptor('pic'))
    doAdd(@Body() body, @UploadedFiles() files){
        ('body: ', body);
        ('files: ', files);
        // 4.循环放入图片
        for(const file of files) {
            const writeImage = createWriteStream(join(__dirname, '../../public/upload', `${()}-${}`));
            ();
        }
        return '上传图片成功';
    }
}