我是节点js的新手。我有和html表单有文件输入像 -
<form action="importlist_action" method="post" enctype="multipart/form-data">
Select File:
<input type="file" name="file" id="file" tabindex="1" />
</form>
现在,我已将此发布请求重定向到以下控制器方法。
exports.doImport = function(req, res) {
console.log('Post values: ' + JSON.stringify(req.body));
console.log("File path : " + req.body.file);
}
我得到的结果是 -
Post values: {}
File path : undefined
我想要在控制器中上面的表单上选择的文件的路径。有人可以纠正我在这里做错了吗?
任何帮助都将非常感激。
答案 0 :(得分:0)
你必须要小心,node.js默认不会像PHP那样上传文件夹中的文件。
您可能正在寻找的是为您执行此操作的中间件:
答案 1 :(得分:0)
如果您正在使用Express 3.x和bodyParser()中间件,那么您应该在req.files
下查找文件。
如果您使用Express 4.x,则必须使用单独的模块来读取多部分请求。此类模块的示例包括:busboy(/ connect-busboy / multer / reformed)和formidable。
正如@adeneo所提到的,并非所有浏览器都提供实际文件 path ,但大多数浏览器至少会提供文件名。 Busboy和Formidable都可以使用文件名。