formdata+busboy上传文件没有响应?
如题,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 (returndata) {
alert(returndata);
},
error: function (returndata) {
alert(returndata);
}
});
浏览器用的 firefox, 提交的时候最初没有任何消息头产生,但过了很长一段时间(大概是某个地方本身设了超时时间的原因)又会有请求头产生(没有响应头)。content-type 是 multipart/form-data;boundary...这些。
然后又改用 chrome,立即产生的头,content-type 还是 multipart/form-data...,formdata 的内容在 request payload 里面看得到,都是正确的。
后端用的 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 纠结了好久了。。
*之前用$.ajax()上传的data字段是普通对象都是正常的,所以我怀疑是formdata+ajax的问题,但是用chrome看头的时候又又payload。。。
OTZ
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我也遇到了这个问题 困扰了很久了 不知道你是否已经解决