Nestjs 上传文件
时间: 2023-06-30 19:14:38 浏览: 175
nestjs-upload-file
在 NestJS 中,上传文件通常使用 `multer` 中间件来处理。以下是一些基本的步骤:
1. 安装 `multer`:`npm install --save @nestjs/platform-express multer`
2. 在需要上传文件的模块中导入 `MulterModule` 并配置:
```typescript
import { Module } from '@nestjs/common';
import { MulterModule } from '@nestjs/platform-express';
@Module({
imports: [
MulterModule.register({
dest: './uploads', // 设置上传文件的保存目录
}),
],
})
export class AppModule {}
```
3. 在控制器中使用 `@UseInterceptors` 装饰器和 `FileInterceptor` 拦截器来处理上传的文件:
```typescript
import { Controller, Post, UseInterceptors, UploadedFile } from '@nestjs/common';
import { FileInterceptor } from '@nestjs/platform-express';
@Controller('upload')
export class UploadController {
@Post()
@UseInterceptors(FileInterceptor('file')) // 设置上传文件的字段名
async uploadFile(@UploadedFile() file) {
console.log(file); // 输出上传文件的信息
}
}
```
这里的 `file` 就是上传文件的信息,包括 `fieldname`、`originalname`、`encoding`、`mimetype`、`size` 等属性。
4. 在客户端发送文件上传请求。可以使用 `axios` 库来发送请求:
```typescript
import axios from 'axios';
const formData = new FormData();
formData.append('file', file); // 将要上传的文件添加到 FormData 中
axios.post('http://localhost:3000/upload', formData, {
headers: {
'Content-Type': 'multipart/form-data', // 设置请求头的 Content-Type
},
});
```
以上就是在 NestJS 中上传文件的基本步骤。当然,还有更多的配置和处理方式可以根据实际需求来自行探索。
阅读全文