有哪位大手子用过 FormData+connect-busboy 上传文件么

2017-10-26 13:49:56 +08:00
 chillpill

如题,lz 在学习用 FormData 上传文件没有响应。

前端 js 文件: var fd= new FormData($('#musicup')[0]);//#musicup 是一个 form 表单

$.ajax({ url: '/upload' , method: 'POST', data: fd, async: false, cache: false, contentType: false, processData: false, success: function (msg) { alert("success with "+msg); }, error: function (msg) { alert("fail with "+msg); } });

浏览器用的 firefox, 提交的时候最初没有任何消息头产生,但过了很长一段时间(大概是某个地方本身设了超时时间的原因)又会有请求头产生(没有响应头)。content-type 是 multipart/form-data;boundary...这些。 然后又改用 chrome,立即产生的头,content-type 还是 multipart/form-data...,formdata 的内容在 request payload 里面看得到,都是正确的。

后端用的 node keystone,其实是封装的 express+mongodb 的框架,之前在网上搜了一下,用了一个 connect 中间件 connect-busboy,

后端 js: req.pipe(req.busboy); req.busboy.on('file',function(fieldname,file,filename){ console.log("Uploading: " + filename); //一些处理 }); req.busboy.on('data',function(data){ console.log(data); }); req.busboy.on('field',function(fieldname, val, fieldnametruncated, valtruncated){ console.log(fieldname+", "+ inspect(val)); }); req.busboy.on('finish',function(){ console.log("finished uploading"); });

结果只有 finish 事件触发了,file,data,field 都没有触发

哪位大神带带路。。。T T 纠结了好久了。。

1487 次点击
所在节点    前端开发
1 条回复
chillpill
2017-10-26 15:51:34 +08:00
啊啊啊啊啊都快疯了。。
补充进度。。。
经笨办法调试,formdata 提交的数据用 req.body 打印(没有用中间件处理的)
始终没有文件数据,input text 之类的都有
T T

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/400934

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX