Ajax上传Google Chrome的文件错误?
问题描述:
我在我的web应用程序中使用noswfupload(ajax上传器),并且它可以在Firefox和IE中正常工作,但它不适用于Google Chrome。我发现一个错误,显示“PHP警告:缺少边界多部分/形式数据POST数据未知在线0”Ajax上传Google Chrome的文件错误?
谁能告诉我如何解决这个问题?
答
不知道你的具体上传,但:
此错误是与你的XHR请求标头设置的方式有问题,而且您的请求数据。有效的语法(从我的铬调试控制台),看起来是这样的:
请求头:
Content-Type:multipart/form-data; boundary=----WebKitFormBoundarykEVXyg09HZBMzplL
请求数据:
------WebKitFormBoundarykEVXyg09HZBMzplL
Content-Disposition: form-data; name="foo_bar"
data:image/jpeg;base64,/9j/4AAQSkZJ
[....]
pAkhCD/9k=
------WebKitFormBoundarykEVXyg09HZBMzplL--
你可以看到HTTP RFC这里:http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html,它提到的边界语法在标题....
您可以手动更改标题为在此答案:How to send multipart/form-data form content by ajax (no jquery)?,或者您可以尝试解决它在更高的水平。
的FORMDATA对象可以模仿那些参数太多,(虽然它不是在所有的浏览器实现)... https://developer.mozilla.org/en/DOM/XMLHttpRequest/FormData/Using_FormData_Objects
我有一个jquery Ajax调用PHP文件(具有相同的错误)问题,通过开水jQuery和使用formData和原始的httpxhrrequest来解决它。
看起来库存在一个错误,它没有正确格式化请求。那个库有bug跟踪器吗? – tjameson
nop !!我在错误日志文件中发现错误。 –
如果它在Google Chrome中不起作用,那么它可能也不适用于Safari。你有使用这个框架而不是使用[FormData](http://hacks.mozilla.org/2010/05/formdata-interface-coming-to-firefox/)对象的原因吗? – tjameson