V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
chillpill
V2EX  ›  前端开发

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

  •  
  •   chillpill · 2017-10-26 13:49:56 +08:00 · 1487 次点击
    这是一个创建于 2586 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,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 纠结了好久了。。

    chillpill
        1
    chillpill  
    OP
       2017-10-26 15:51:34 +08:00
    啊啊啊啊啊都快疯了。。
    补充进度。。。
    经笨办法调试,formdata 提交的数据用 req.body 打印(没有用中间件处理的)
    始终没有文件数据,input text 之类的都有
    T T
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   891 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 20:27 · PVG 04:27 · LAX 12:27 · JFK 15:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.