jQuery Ajax 分片上传文件的问题.
資深大佬 : dd112389 2
环境
Chrome 89.0.4389.90
FireFox 86.0.1
OS: Windows 10 20H2
服务端: PHP 7.4.9
集成环境: Wampserver x64
构造 FormData
// 传入一个参数 file, 类型为 File. var chunkSize = 8388608; var formData = new FormData; formData.set('chunk', file.slice(0, chunkSize));
请求
new Promise((resolve, reject) => { $.ajax({ url: chunk_url, type: 'POST', data: formData, cache: false, contentType: false, processData: false, success: function success() { // 更新进度条的代码... resolve(); }, error: function error(jqXHR, textStatus) { conosle.error(textStatus); reject(textStatus); } }); });
问题
搞了两个晚上了, 试了各种奇奇怪怪的方法都没有用.
当请求之后开发者工具里面请求中没有找到 POST 参数.
然后用 Firefox 的开发者工具查看的时候会出现一行请求已被截断.
接下来我尝试去改 php 的配置, 具体是这三个参数:
post_max_size = 256M max_input_vars = 2500 upload_max_filesize = 128M
然后发现依然没有用, POST 参数依然不会去到后端, 也不会显示在请求里面.
最后我直接把整个 file 给丢到 FormData 里面发现请求可以正常发送, 工具里也能看到所有 POST 参数并且后端也能拿到…
邪门了…
猜测
- ajax 处理 FormData 的时候不能正确判断文件的结束位置.
Blob.slice处理的问题.- 撞鬼了.
所以这到底是我系统的问题还是怎样, 脑壳大…
麻烦各位大佬看看了…
大佬有話說 (11)