作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用 NEST.JS 和 MULTER 制作一个简单的文件上传 REST 界面——但它不起作用。我可以将二进制文件 debug.log 发布到 URL,并且我看到“Hello undefined”消息,但是上传的文件既不是在给定的文件夹上传中创建,也不是因为扩展名不正确而被拒绝 - 根据文件过滤器。
但是,没有显示异常或错误。
为什么multer不起作用?
为什么@Uploadedfile() 文件显示为未定义?
谢谢
import { Controller, Post, Request, UseInterceptors, FileInterceptor, UploadedFile, HttpCode, HttpException, HttpStatus } from '@nestjs/common';
import { diskStorage, File } from 'multer';
const path = require('path');
const myStorage = diskStorage({
destination: function (req, file, callback) {
callback(null, './uploads/');
},
limits: { fileSize: 1000000 },
fileFilter: function (req, file, cb) {
const extension = path.extname(file.originalname).toLowerCase()
const mimetyp = file.mimetype
if (extension !== '.jpg' || mimetyp !== 'image/jpg') {
cb(new HttpException('Only images are allowed', HttpStatus.NOT_ACCEPTABLE));
}
cb(null, true);
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '_' + Date.now() + '.jpg');
}
});
@Controller('documents')
export class DocumentsController {
@Post()
@HttpCode(HttpStatus.OK)
@UseInterceptors(FileInterceptor('file', { storage: myStorage }))
public async addDocument(@UploadedFile() file): Promise<any> {
console.log("Hello " + file);
}
}
最佳答案
我知道对于提出这个问题的人来说,这是一个迟到的答复,但答案是给将来将要面对的人。
首先检查nestjs documentation
如 MulterModule
在 *.module.ts
注册文件它在 src
之外创建上传目录文件夹。这是一个很好的做法。
MulterModule.register({
dest: './upload',
});
如果需要更改目标目录,请使用
destination: String|callback
来自
DiskStorageOptions
或
dest:string
来自
FileInterceptor
.对于上传路径使用如
src/../upload
将文件夹保留在
src
之外目录。
console.log("Hello " + file);
这里的文件是
Object
并尝试与
String
连接.
console.log("Hello ", file);
fileFilter: function (req, file, cb) {
const extension = path.extname(file.originalname).toLowerCase()
const mimetyp = file.mimetype
if (extension !== '.jpg' || mimetyp !== 'image/jpg') {
cb(new HttpException('Only images are allowed', HttpStatus.NOT_ACCEPTABLE));
}
cb(null, true);
}
return
.
关于rest - 为什么我的上传文件 POST 不能使用 NEST.JS 和 Multer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58902094/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!