NodeJS在TypeScript项目中遇到文件上传问题

时间:2013-12-16 13:01:44

标签: node.js typescript

我正在尝试使用强大的模块将文件上传到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

根据文档,我的定义似乎是正确的,我不明白这个错误。

1 个答案:

答案 0 :(得分:1)

您无法通过创建新的空File实例来获取上传文件的路径。

files方法回调中的parse参数包含上传文件的File个对象。