Javascript XMLHttpRequest.send(ArrayBuffer)上的网络错误
我正在为3gb及以上的文件编写一个上传例程。为此,我将文件分块,并使用Javascript XMLHttpRequest.send(ArrayBuffer)上的网络错误,javascript,php,file-upload,web-worker,Javascript,Php,File Upload,Web Worker,我正在为3gb及以上的文件编写一个上传例程。为此,我将文件分块,并使用XMLHttpRequest.send(chunk)将每个片段发送到我的服务器 我使用webworkers使整个过程同步,所以我也使用FileReaderSync 我的例行程序对小文件很好,但在大文件中我会不时出错 异常发生在XMLHttpRequest.send(chunk) 网络错误//至少在IE 11中 我的日志显示 *检测到缓冲区溢出*:/usr/sbin/apache2终止 我就这样把我的工人送进去 self.onm
XMLHttpRequest.send(chunk)
将每个片段发送到我的服务器
我使用webworkers使整个过程同步,所以我也使用FileReaderSync
我的例行程序对小文件很好,但在大文件中我会不时出错
异常发生在XMLHttpRequest.send(chunk)
网络错误//至少在IE 11中
我的日志显示
*检测到缓冲区溢出*:/usr/sbin/apache2终止
我就这样把我的工人送进去
self.onmessage = function (event)
{
// create XHR instance
var xhr = new XMLHttpRequest();
// send the file through POST
xhr.open("post", "../upload.php", false); // Sync open file
xhr.responseType = 'text';
xhr.setRequestHeader("Content-Type", "application/octet-stream; charset=UTF-8");
xhr.setRequestHeader("X-INDEX", event.data["index"]); // Chunkindex
xhr.setRequestHeader("X-CHUNKS-TOTAL", event.data["maxChunks"]); // Total chunks
xhr.setRequestHeader("X-PSEUDO-NAME", event.data["pseudoName"]); // pseudo name
xhr.setRequestHeader("X-CHUNK-SIZE", event.data["size"]); // chunk size
try {
xhr.send(event.data["content"]); // here the Exception occurs
} catch (e)
{
self.postMessage('error'); // error case
}
self.postMessage(xhr.responseText); // Return answer
};
日志中的回溯或内存映射在这里没有帮助,我不知道发生了什么
更新
块被读取
$inputHandler=fopen('php://input","r";编码>并写入文件文件内容($target,$inputHandler,file\u APPEND)
这是一个服务器错误,可能与您的实现无关。如何在服务器上保存数据?我将这个问题标记为不清楚,因为重要信息丢失。这是一个奇怪的问题,但试图解决它将导致长时间的评论讨论。如果你想解决这个问题,我创建了一个聊天室:我建议我们尝试使用不同的服务器来保存这个文件,看看它是否是Apache问题。在此之后,我们可能会尝试使用更多的低级函数来保存数据。@TomášZato谢谢您,但我会先尝试禁用所有模块等。如果我能找到任何解决方案或找不到任何解决方案,我会告诉您