当前位置: 首页 > 面试题库 >

使用Express 4.0上传文件:req.files未定义

裴泰平
2023-03-14
问题内容

我试图得到一个简单的文件上传机制的工作与快车4.0,但我不断收到undefinedreq.filesapp.post体内。以下是相关代码:

var bodyParser = require('body-parser');
var methodOverride = require('method-override');
//...
app.use(bodyParser({ uploadDir: path.join(__dirname, 'files'), keepExtensions: true })); 
app.use(methodOverride()); 
//...
app.post('/fileupload', function (req, res) {
  console.log(req.files); 
  res.send('ok'); 
});

..和随附的帕格代码:

form(name="uploader", action="/fileupload", method="post", enctype="multipart/form-data")
    input(type="file", name="file", id="file")
    input(type="submit", value="Upload")

解决方案
由于以下mscdex的响应,我已切换为使用busboy而不是bodyParser

var fs = require('fs');
var busboy = require('connect-busboy');
//...
app.use(busboy()); 
//...
app.post('/fileupload', function(req, res) {
    var fstream;
    req.pipe(req.busboy);
    req.busboy.on('file', function (fieldname, file, filename) {
        console.log("Uploading: " + filename); 
        fstream = fs.createWriteStream(__dirname + '/files/' + filename);
        file.pipe(fstream);
        fstream.on('close', function () {
            res.redirect('back');
        });
    });
});

问题答案:

body-parser模块仅处理JSON和urlencoded表单提交,而不是多部分提交(如果您要上传文件,情况就是如此)。

对于multipart,您需要使用诸如connect-busboymulterconnect- multiparty(multiparty /
formidable是Express
BodyParser中间件中最初使用的东西)之类的东西。同样是FWIW,我正在名为busboy的busboy上的更高层次上工作reformed。它带有Express中间件,也可以单独使用。



 类似资料:
  • 问题内容: 我正在使用Spring Framework 4.1.5,Spring Security 4.0.0.RC2,Spring Webflow 2.4.0.RELEASE和Tomcat 8.0.15。 我遵循了webflow 文档中的示例,但是无法在Form Bean中获取文件。 表格 表单豆 流 支持对象 multipartResolver Webflow配置 在Tomcat的内部,我已经

  • 问题内容: 我试图编写代码以将文件上传到PHP中的“媒体”文件夹。由于某些原因,它仍然无法正常工作。 这是执行代码: 这是我的表单代码: 任何想法为什么它可能无法正常工作? 编辑: 当我使用命令“ print_r($ _ FILES);”时,它显示: Array([file] => Array([name] =>屏幕截图2012-05-29 at 12.36.11 PM.png [type] =>

  • 如何使用selenium webdriver通过窗口提示从本地上传文件? 我想执行以下操作: 点击窗口上的“浏览”选项 从窗口提示符转到保存文件的本地特定位置 选择文件,然后单击“打开”以上传文件。

  • 问题内容: 我想将文件上传到给定的文件夹。 错误是: 注意:未定义的变量:第3行的C:\ wamp \ www \ sdg \ import \ ips.php中的HTTP_POST_FILES 问题答案: 以下是一种上传文件的方法,还有许多其他方法。 正如@nordenheim所说,自PHP 4.1.0起已弃用,因此不建议使用。 PHP代码(upload.php) HTML代码启动功能 希望这可

  • 问题内容: 我已经通过ftp成功上传了文件,但是现在我需要通过SFTP进行上传。我可以成功连接到远程服务器,创建文件并写入文件,但是无法将现有文件从本地服务器上载到远程服务器。ftp_put是否不通过sftp连接触发? 我的代码用来写文件: 有没有人成功抓取本地文件并通过上述方法使用sftp上传?一个例子将不胜感激。 谢谢 问题答案: 通过上述方法(涉及sftp),您可以使用stream_copy

  • 问题内容: 我意识到我可以非常轻松地使用CURL做到这一点,但是我想知道是否可以与http流上下文一起使用,以将文件上传到远程Web服务器,如果可以,怎么办? 问题答案: 首先,Content-Type 的第一个规则是 定义一个边界 , 该边界 将用作每个部分之间的定界符(因为顾名思义,它可以包含多个部分)。边界可以是 内容正文中不包含的任何字符串 。我通常会使用时间戳记: 定义边界后,必须将其与