我正在尝试使用强大的模块将文件上传到NodeJS服务器。上传后,我想将文件重命名为其他内容,我需要获取上传文件的名称和路径。根据formidable提供的文档,您必须调用Formidable.File类来获取文件所在的文件路径。
这是文档: https://github.com/felixge/node-formidable#formidableincomingform
我的项目是用Typescript编写的,所以我为Formidable编写了一个Typescript定义,它只包含了我需要调用的那些文字。这是在另一个文件Upload.ts
中调用的这是强大的
的打字稿定义declare module "formidable" {
export class IncomingForm{
uploadDir: String;
keepExtensions: Boolean;
type: String;
parse(req, Function) : void;
}
export class File{
name: String;
path: String;
}
}
Upload.ts
public upload(req, res){
var form = new formidable.IncomingForm();
var file = new formidable.File();
var originalFileName = file.name;
form.uploadDir = this.directory;
form.keepExtensions = true;
form.type = 'multipart';
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end(util.inspect({fields: fields, files: files}));
});
return;
}
当我点击“上传”按钮时,会出现错误消息:
var file = new formidable.File();
TypeError: undefined is not a function
根据文档,我的定义似乎是正确的,我不明白这个错误。
答案 0 :(得分:1)
您无法通过创建新的空File
实例来获取上传文件的路径。
files
方法回调中的parse
参数包含上传文件的File
个对象。