我已经在Edge,Chrome和Opera上进行了尝试,并且我的上传效果很好,问题仅在firefox上发生:
从前端,我像这样发送multipart / form-data请求:
$.ajax({
url: `/api/myUpdate/${$scope._id}`,
method: 'PUT',
data:formData,
contentType:false,
processData:false,
cache:false,
success: response =>{
..
},
error: err =>{
..
}
})
然后在我的nodeJs服务器上:
路线:
var multiparty = require('connect-multiparty');
var multipartyMiddleware = multiparty({maxFieldsSize:'200mb'});
app.route('/api/myUpdate/:_id')
.post(users.requiresLogin, multipartyMiddleware, hasAuthorization, myUpdateFn);
在调试时,我会通过我的requirelogin中间件进行操作,但是它陷入了multipartyMiddleware中,它从未达到“ hasAuthorization”或“ myUpdateFn”。
请求超时后,我在服务器上收到此输出错误
Error: Request aborted
at IncomingMessage.onReqAborted (C:\dev\eedweb\node_modules\multiparty\index.js:190:17)
at IncomingMessage.emit (events.js:182:13)
at abortIncoming (_http_server.js:449:9)
at socketOnClose (_http_server.js:442:3)
at Socket.emit (events.js:187:15)
at TCP._handle.close (net.js:610:12)
从我完成的调试来看,它似乎卡在了一个名为“ async_hooks”的文件中……但我什至不甚了解。
我尝试了不同的上传大小,但似乎并没有影响结果。
前端没有错误消息,并且Firefox检查器除了显示网络标签中的标头外没有显示其他任何内容,但是在浏览器中以及当我在浏览器中检查对象时,formdata对象似乎是相同的节点服务器似乎有一个消息正文,参数,文件等。firefox似乎没有在网络检查器中显示它。
我做错什么了吗?