我正在使用 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/