javascript - 将文件上传到服务器的发布表单,请求中仅显示文件名?

标签 javascript html node.js forms

我正在使用 Node.js 作为服务器,并尝试通过表单将文件上传到服务器。我检查了其他帖子,其中大多数建议采用以下方法,但我打印了完整的 req 并且在大多数建议的方法中找不到该字段:

表格:

<form method="POST" action="/imageupload">
    <input type="file" name="image" id="image" accept="image/jpeg, image/png"/> <br/>
    <input type="submit" value="Search" name="search" id="search" />
</form>

在服务器中:

app.post('/imageupload', function (req, res){
    //var imgPath = req.files.image;
    console.log(req);
});

以下是我在请求中发现的与其他帖子建议不同的内容:

 headers: 
  { host: 'localhost:8081',
 connection: 'keep-alive',
 'content-length': '33',
 'cache-control': 'max-age=0',
 accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
 origin: 'http://localhost:8081',
 'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36',
 'content-type': 'application/x-www-form-urlencoded',
 dnt: '1',
 referer: 'http://localhost:8081/',
 'accept-encoding': 'gzip, deflate',
 'accept-language': 'en-US,en;q=0.8,ja;q=0.6,zh-CN;q=0.4,zh-TW;q=0.2',
 cookie: 'JSESSIONID=89875bd29370ecf4ae585822f40c; treeForm_tree-hi=treeForm:tree:updateCenterPlugIN; connect.sid=s%3AJJfmZcGvlE388fwSVSNeoQ6Y0hV55Wur.VQdPuxk0W%2BHHt2zmKLlBxqdUFFXJumtGOOcQVcoeJSI' },

body: { file: 'sampleimg.jpg', search: 'Search' },

我找不到任何指示文件的字段,访问它会导致服务器错误:

TypeError: Cannot read property 'image' of undefined

所以我不确定出了什么问题。有人可以建议吗?

最佳答案

将您的表单更改为

<form method="POST" action="/imageupload" enctype="multipart/form-data"> 

添加enctype。作为docs说我们上传文件时需要它。

body-parser 仅处理 JSON。要处理 multipart 我建议您使用 connect-busboy 。它处理多部分表单数据。

关于javascript - 将文件上传到服务器的发布表单,请求中仅显示文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30238280/

相关文章:

javascript - 来自 node js 的 HTML 代码未被浏览器解释为这样

jquery - 垂直居中标签和输入字段

node.js - NodeJS 和 Angular 2

c# - 需要使用 jQuery getJSON 的工作示例

javascript - 从对象数组到数组对象

javascript - 使用 JS 或 JQuery 获取渲染页面

javascript - 在字母之间添加分隔符

javascript - 避免 Node.js 中的相对 require 路径

javascript - jQuery UI Datepicker 使用新的 DefaultDate 销毁并重新初始化日历

javascript - 如何使用预加载器和多个图像显示加载状态?