如何在输入类型文件中选择的节点js中获取文件路径

时间:2014-04-26 12:03:15

标签: html node.js file file-io

我是节点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

我想要在控制器中上面的表单上选择的文件的路径。有人可以纠正我在这里做错了吗?

任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:0)

你必须要小心,node.js默认不会像PHP那样上传文件夹中的文件。

您可能正在寻找的是为您执行此操作的中间件:

http://www.senchalabs.org/connect/bodyParser.html

答案 1 :(得分:0)

如果您正在使用Express 3.x和bodyParser()中间件,那么您应该在req.files下查找文件。

如果您使用Express 4.x,则必须使用单独的模块来读取多部分请求。此类模块的示例包括:busboy(/ connect-busboy / multer / reformed)和formidable

正如@adeneo所提到的,并非所有浏览器都提供实际文件 path ,但大多数浏览器至少会提供文件名。 Busboy和Formidable都可以使用文件名。