【问题标题】:Upload file using Express failed : “cannot read property file of undefined”使用 Express 上传文件失败:“无法读取未定义的属性文件”
【发布时间】:2014-02-19 10:03:57
【问题描述】:

我想上传一个格式像这样的文件(JADE):

form(action="/file-upload", name="upload", method="post", enctype="multipart/form-data")
    input(type="file", name="theFile")
    input(type="submit", name="Upload")

这是我的 app.js:

app.use(express.methodOverride());
app.use(express.multipart());
app.use(express.bodyParser());

这就是我处理请求的方式:

app.post('/file-upload',function(req,res){
   console.log('FIRST TEST: ' + JSON.stringify(req.files));
   console.log('second TEST: ' +req.files.theFile.name);
});

这是我的 Node.js 控制台:

FIRST TEST: undefined
TypeError: Cannot Read Property 'theFile' of undefined....etc....

哦,顺便说一句,Connect 模块发出警告:

connect.limit() will be removed in connect 3.0
connect.multipart() will be removed in connect 3.0
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives

我在这里做错了什么?我遵循hereherehere 的建议,但没有任何效果。感谢您的帮助.....

更新: 我刚刚将 LOGGER 添加到我的应用程序中,所以我似乎收到了请求:

127.0.0.1 - - [Wed, 19 Feb 2014 11:02:11 GMT] "POST /file-upload HTTP/1.1" 500 - 
"http://localhost:3000/admin/news-add" "Mozilla/5.0 (Windows NT 6.1; WOW64) 
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"

【问题讨论】:

  • Express 有一个文件上传示例here,根据它,它看起来就像你在服务器后端做的事情。尝试添加app.use(express.logger('dev') 以启用一些日志输出以查看您实际收到的内容。
  • 按照您的建议添加记录器。看起来不错,服务器收到了 POST 请求,但仍然“未定义”

标签: node.js express pug


【解决方案1】:

我现在明白了……我有

app.use(express.multipart());
app.use(express.bodyParser());
app.use(express.methodOverride());

app.use(app.router); 之后应该在之前声明它,像这样:

app.use(express.multipart());
app.use(express.bodyParser());
app.use(express.methodOverride())
app.use(app.router);

现在,它的工作就像一个魅力......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 2018-06-03
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多