在node.js中使用express时如何更改上载路径

在node.js中使用express时如何更改上载路径,node.js,file-upload,express,formidable,Node.js,File Upload,Express,Formidable,实际上我遇到了两个问题 首先,如何更改上传路径 我的文件夹结构如下所示: |__app.js |__upload 我的节点代码在app.js中并从中启动, 所以我想将上传图像上传到上传文件夹,我更改了路径: var form = new formidable.IncomingForm; form.uploadDir = "./upload"; 好像上传成功了,但我不知道文件去了哪里, 它不在上载文件夹中 那么正确的路径名是什么 第二个问题是 如果我不更改它,它可以正确上传到C:/Users/

实际上我遇到了两个问题

首先,如何更改上传路径

我的文件夹结构如下所示:

|__app.js
|__upload
我的节点代码在app.js中并从中启动, 所以我想将上传图像上传到上传文件夹,我更改了路径:

var form = new formidable.IncomingForm;
form.uploadDir = "./upload";
好像上传成功了,但我不知道文件去了哪里, 它不在上载文件夹中

那么正确的路径名是什么

第二个问题是

如果我不更改它,它可以正确上传到
C:/Users/ADMINI~1/AppData/Local/Temp
但它将在没有foramt的情况下重新命名

那么我如何获得上传格式并自己重命名呢

第三个问题是

我还将处理程序绑定到
进程
事件, 像

但它似乎不起作用,当上传日志时什么都没有。为什么?我遗漏了什么吗

这是我的全部代码:

app.post('/upload', function (req, res) {
    var form = new formidable.IncomingForm;
    // form.uploadDir = "./upload";
    console.log(form.uploadDir);

    form.parse(req, function(err, fields, files){
      if (err) return res.end('You found error');
      console.log(files.image);
    });

    form.on('progress', function(bytesReceived, bytesExpected) {
        console.log(bytesReceived + ' ' + bytesExpected);
    });

    form.on('error', function(err) {
        res.writeHead(200, {'content-type': 'text/plain'});
        res.end('error:\n\n'+util.inspect(err));
    });

    // res.end('Done');
    res.send("well done");

    return;
})

首先,你必须告诉你的应用程序你不想让
bodyParser
处理文件上传

app.use(express.bodyParser());

删除最后一行以自行处理文件上载。初始化表单时添加一些自定义选项

var form = new formidable.IncomingForm({ 
  uploadDir: __dirname + '/tmp',  // don't forget the __dirname here
  keepExtensions: true
});
现在您的代码应该可以工作了

app.use(express.json());
app.use(express.urlencoded());
app.use(express.multipart());
var form = new formidable.IncomingForm({ 
  uploadDir: __dirname + '/tmp',  // don't forget the __dirname here
  keepExtensions: true
});