【问题标题】:Formidable upload file don't trigger强大的上传文件不触发
【发布时间】:2014-10-01 17:31:39
【问题描述】:

开发测试环境:

  • Windows 8 64 位
  • 节点版本安装0.10.5
  • npm 版本 1.2.18
  • 表达框架
  • 用于文件上传的强大模块
  • Firefox 和 Internet Explorer 浏览器

HTML 代码:

<form id="caricaMasterImg" method="post" enctype="multipart/form-data" action="/image/upload"> 
    <input type="file" id="masterImg" name="masterImg" value="Sfoglia" accept="image/*"/>
    <input type="submit" value="carica" id="submitLoadImg" />
</form>

app.js 代码:

var image = require('./route/image');
app.post('/image/upload', image.upload);

routes/image.js 代码:

exports.upload = function(req, res){
    var form = new formidable.IncomingForm();
    form.uploadDir =  path.join(__dirname, 'tmp');
    console.log('Upload directory is: '+form.uploadDir);
    fs.exists(form.uploadDir, function (exists) {
        console.log('is an existing directory? '+exists);
    });
    form.parse(req, function(err, fields, files) {
        console.log(fields);
        console.log(files);
    }); 
};

问题:

单击提交按钮时,我希望看到使用 console.log(files) 指令记录的文件。日志写入:

上传目录为:C:\Liber-I\app\FileSystemManager\routes\tmp 是现有目录吗?真的

没有更多的日志被写入应用程序控制台几分钟。 我测试了无文件提交的情况,似乎它的行为相同!这是一个太奇怪的行为而不是 nodejs 问题,我在哪里做错了?

【问题讨论】:

  • 不熟悉强大的,但为什么不使用 connect-multipartyconnect-busboy 因为它们是由 express官方支持的>:github.com/senchalabs/…
  • /image/upload路由之前你使用的是什么中间件?
  • @mscdex 我想我在 /image/upload 之前没有使用其他中间件,但我不确定我是否正确地得到了你的问题。
  • @Jordonias 我采纳了您的建议并尝试使用连接多方。我需要更多地测试我的代码,但现在上传的文件在我的路由函数上记录为 JSON 对象(如预期的那样),物理上上传到默认上传文件夹中。我想设置一个不同的上传目录:var myPath = path.join(__dirname,'/tmp'); var multipart = require('connect-multiparty'); var multipartMiddleware = multipart({uploadDir : myPath});,但仍使用默认文件夹。
  • 我的意思是,在该路由之前,您必须拥有某种支持多部分的正文解析中间件use()d。

标签: node.js express image-uploading formidable


【解决方案1】:

我认为我没有做错。事实是我无法解决这个问题,所以我决定解决这个问题。我选择使用 connect-multiparty 进行文件上传,它的工作原理非常棒

【讨论】:

    猜你喜欢
    • 2022-10-07
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2021-10-10
    • 2011-12-23
    • 2016-10-22
    • 2012-05-09
    相关资源
    最近更新 更多