在 nest js 中管理上传的图片
Manage uploaded image in nest js
我使用 multer 来管理上传的文件:
@Post('upload') @UseInterceptors(FilesInterceptor("images", 10, {
dest: "./uploads",
}))
uploadMultiple(@UploadedFiles() files) {
console.log(files, 'test');
}
我尝试将文件扩展名添加到我上传的文件中:
@Post('upload') @UseInterceptors(FilesInterceptor("images", 10, {
dest: "./uploads",
filename: function (req, file, cb) {
cb(null, Date.now() + '.jpg') //Appending .jpg
}
}))
但是当我这样做时出现错误:
TS2345: Argument of type '{ dest: string; filename: (req: any, file: any, cb: any) => void; }' is not assignable to parameter of type 'MulterOptions'. Object literal may only specify known properties, and 'filename' does not exist in type 'MulterOptions'
如何为我上传的文件指定文件扩展名?
您可以使用 extname
从 path
导入并使用 diskStorage
动态地获取您的文件扩展名。
import { extname } from 'path';
import { diskStorage } from 'multer';
export const exampleDiskStorage = diskStorage({
destination: './public/img/users',
filename: (req, file, cb) => {
return cb(null, `${Date.now()}${extname(file.originalname)}`);
}
});
在你的模块中,你只需要导入diskStorage
到MulterModule.register
import { MulterModule } from '@nestjs/platform-express';
@Module({
imports: [
MulterModule.register({
storage: exampleDiskStorage,
}),
],
});
我使用 multer 来管理上传的文件:
@Post('upload') @UseInterceptors(FilesInterceptor("images", 10, {
dest: "./uploads",
}))
uploadMultiple(@UploadedFiles() files) {
console.log(files, 'test');
}
我尝试将文件扩展名添加到我上传的文件中:
@Post('upload') @UseInterceptors(FilesInterceptor("images", 10, {
dest: "./uploads",
filename: function (req, file, cb) {
cb(null, Date.now() + '.jpg') //Appending .jpg
}
}))
但是当我这样做时出现错误:
TS2345: Argument of type '{ dest: string; filename: (req: any, file: any, cb: any) => void; }' is not assignable to parameter of type 'MulterOptions'. Object literal may only specify known properties, and 'filename' does not exist in type 'MulterOptions'
如何为我上传的文件指定文件扩展名?
您可以使用 extname
从 path
导入并使用 diskStorage
动态地获取您的文件扩展名。
import { extname } from 'path';
import { diskStorage } from 'multer';
export const exampleDiskStorage = diskStorage({
destination: './public/img/users',
filename: (req, file, cb) => {
return cb(null, `${Date.now()}${extname(file.originalname)}`);
}
});
在你的模块中,你只需要导入diskStorage
到MulterModule.register
import { MulterModule } from '@nestjs/platform-express';
@Module({
imports: [
MulterModule.register({
storage: exampleDiskStorage,
}),
],
});