Javascript 文件大小0,从JS FileReader上载文件块时在PHP中出现错误0

Javascript 文件大小0,从JS FileReader上载文件块时在PHP中出现错误0,javascript,php,file-upload,filereader,Javascript,Php,File Upload,Filereader,我目前正在一个PHP网站上工作,该网站的文件大小上传限制为32MB(在一个PHP.ini文件中设置,我不允许更改),因此我目前的计划是在客户端用Javascript解析32MB的文件块,并将这些块上传到我们的PHP服务器,在那里重新组装它们。我使用FileReader API来实现这一点,如中所述 但是,我在PHP服务器上收到的文件(在$_文件中)有错误0和大小0,即使我提交了一个大小远低于32MB的小文件 我的回调函数(在alediafaria的答案代码中用作callback())如下所示:

我目前正在一个PHP网站上工作,该网站的文件大小上传限制为32MB(在一个PHP.ini文件中设置,我不允许更改),因此我目前的计划是在客户端用Javascript解析32MB的文件块,并将这些块上传到我们的PHP服务器,在那里重新组装它们。我使用FileReader API来实现这一点,如中所述

但是,我在PHP服务器上收到的文件(在$_文件中)有错误0和大小0,即使我提交了一个大小远低于32MB的小文件

我的回调函数(在alediafaria的答案代码中用作callback())如下所示:

var chunkDoneCallback = function(res, filename, count, total_count, filetype) { 
    var renamedFile = new File([res], count + "_" + total_count + "_" + filename, {type: filetype});
    console.log('Filename ' + renamedFile.name + ' (' + renamedFile.size + ' bytes)');
    console.log(renamedFile);
    var form_data = new FormData();                  
    form_data.append('testfile_chunk', renamedFile);
    var req = new XMLHttpRequest();
    req.onreadystatechange = function() {//Call a function when the state changes.
        if(req.readyState == XMLHttpRequest.DONE && req.status == 200) {
            // Request finished. Do processing here.
            console.log(req.response);
        }
     }
     req.open("POST", <?php  echo "\"".$_SERVER['PHP_SELF']."\"";?>);
     req.send(form_data);
}
var chunkDoneCallback=函数(res、文件名、计数、总计数、文件类型){
var renamedFile=新文件([res],count+“”+总计数+“”+文件名,{type:filetype});
log('Filename'+renamedFile.name+'('+renamedFile.size+'bytes');
console.log(重命名文件);
var form_data=new FormData();
form_data.append('testfile_chunk',renamedFile);
var req=新的XMLHttpRequest();
req.onreadystatechange=function(){//在状态更改时调用函数。
if(req.readyState==XMLHttpRequest.DONE&&req.status==200){
//请求已完成。请在此处进行处理。
控制台日志(请求响应);
}
}
请求打开(“POST”);
请求发送(表格数据);
}
这表明renamedFile对象具有正确的名称和大小,但PHP端的文件具有正确的名称和0大小。如果我在这里使用完全相同的XMLHttpRequest代码来上传原始的完整文件(当然,假设它小于32MB),那么它会以正确的大小上传。如果使用AJAX代替XMLHttpRequest,也会出现同样的错误

我在网上看到的关于错误0和大小0的每一个答案似乎都表明php.ini最大文件大小限制存在问题,但即使是非常小的文件,我也看到了这一点。我尝试过减小数据块大小,更改请求中的MIME类型等,但都没有成功

感觉这是FileReader如何使用的问题,但我在其文档中没有看到任何与此相关的内容。有什么想法吗?谢谢大家!