如何解决 Ajax XMLHttpRequest 文件上传中的'No Multipart Boundary”错误?
使用 Ajax XMLHttpRequest 上传文件:解决“无多部分边界”错误
尝试使用 XMLHttpRequest 上传文件时,您可能会遇到“请求被拒绝,因为未找到多部分边界”错误。为了解决这个问题,让我们深入研究所提供的代码并找出潜在的原因。
以下代码片段旨在使用 XMLHttpRequest 上传文件:
<code class="javascript">var url = "http://localhost:80/..."; $(document).ready(function(){ document.getElementById('upload').addEventListener('change', function(e) { var file = this.files[0]; var xhr = new XMLHttpRequest(); // xhr.file = file; // not necessary if you create scopes like this xhr.addEventListener('progress', function(e) { var done = e.position || e.loaded, total = e.totalSize || e.total; console.log('xhr progress: ' + (Math.floor(done/total*1000)/10) + '%'); }, false); if ( xhr.upload ) { xhr.upload.onprogress = function(e) { var done = e.position || e.loaded, total = e.totalSize || e.total; console.log('xhr.upload progress: ' + done + ' / ' + total + ' = ' + (Math.floor(done/total*1000)/10) + '%'); }; } xhr.onreadystatechange = function(e) { if ( 4 == this.readyState ) { console.log(['xhr upload complete', e]); } }; xhr.open('post', url, true); xhr.setRequestHeader("Content-Type", "multipart/form-data"); xhr.send(file); }, false); });</code>
登录后复制
解决上述错误,需要解决两个关键点:
- 行 xhr.file = file;是多余的和不必要的。不需要以这种方式附加文件对象。
- 实际问题在于 xhr.send(file) 行。要正确上传文件,需要将其包装在 FormData 对象中,该对象会将其格式化为 multipart/form-data POST 数据对象。更新后的代码应如下所示:
<code class="javascript">... var formData = new FormData(); formData.append("thefile", file); xhr.send(formData); ...</code>
登录后复制
通过创建 FormData 对象并附加文件,您可以确保数据结构正确并准备好在服务器上进行处理。该文件现在可以在 $_FILES['thefile'] 中访问(如果您在服务器端使用 PHP),允许您适当地处理它。
参考 MDC 和 Mozilla 演示等文档资源在遇到此类问题时可以提供宝贵的指导。
以上是如何解决 Ajax XMLHttpRequest 文件上传中的'No Multipart Boundary”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
R.E.P.O.保存文件位置:在哪里以及如何保护它?
3 周前
By DDD

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)