【问题标题】:Ajax upload file error with Google Chrome?谷歌浏览器的 Ajax 上传文件错误?
【发布时间】:2011-11-19 17:16:19
【问题描述】:

我在我的 Web 应用程序中使用 noswfupload(ajax 上传器),它在 Firefox 和 IE 上运行良好,但它不适用于 Google Chrome。我发现了一个错误,显示“PHP 警告:第 0 行未知的多部分/表单数据 POST 数据中缺少边界”

谁能告诉我如何解决这个问题?

【问题讨论】:

  • 看起来库有一个错误,它没有正确格式化请求。该库是否有错误跟踪器?
  • 不!我在错误日志文件中发现了一个错误。
  • 如果它在 Google Chrome 中不起作用,那么它可能也不适用于 Safari。您使用这个框架而不是使用FormData 对象有什么原因吗?
  • 我可以自定义它并通过它的事件和对象轻松地与我的 Web 应用程序集成,也不需要任何其他框架,例如 jQuery 或 mootools。我正在尝试修复它:)

标签: php javascript


【解决方案1】:

不确定您的具体上传者,但是:

此错误是您的 xhr 请求标头设置方式以及您的请求数据的问题。有效语法(来自我的 chrome 调试控制台)如下所示:

请求头:

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 来解决它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 2021-11-08
    • 2014-09-16
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    • 2021-08-26
    相关资源
    最近更新 更多