技术解析
Chrome 89.0.4389.90
FireFox 86.0.1
OS: Windows 10 20H2
服务端: PHP 7.4.9
集成环境: Wampserver x64
// 传入一个参数 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 参数并且后端也能拿到...
邪门了...
Blob.slice
处理的问题.所以这到底是我系统的问题还是怎样, 脑壳大...
麻烦各位大佬看看了...