如何在node.js中使用带有express的formidable时更改上传路径

发布时间:2020-09-30 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了如何在node.js中使用带有express的formidable时更改上传路径编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
其实我遇到了两个问题

首先,如何更改上传路径

我的文件夹结构是这样的:

|__app.js
|__upload

我的节点代码在app.js中并从中启动,
所以我想将上传图片上传到上传文件夹,我改变路径:

var form = new formidable.IncomingForm;
form.uploadDir = "./upload";

它似乎上传成功,但我不知道文件去哪里,
它不在上传文件夹中.

那么正确的路径名称是什么?

第二个问题是

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

那么如何才能获得上传格式并自行重命名?

第三个问题是

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

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

但似乎不起作用,上传日志时没什么.为什么?我错过了什么吗?

这是我的所有代码:

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',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());

equivalent

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
});

现在你的代码应该工作了.

总结

以上是编程之家为你收集整理的如何在node.js中使用带有express的formidable时更改上传路径全部内容,希望文章能够帮你解决如何在node.js中使用带有express的formidable时更改上传路径所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!