我们尝试使用客户端上的“FileReader”javascript对象上传zip文件。对于小文件,一切似乎都很好。如果我们使用132Mo的zip输入文件,在Windows 7上的Firefox v21.0中,通过javascript对象从本地磁盘首次上传效果很好。但是,如果我们尝试选择另一个文件并启动transfert,Firefox会崩溃......在Windows 7上的Chrome v27.0中,第一次尝试时崩溃(请参阅“oups”页面)。我们尝试使用相同浏览器的Mac OS没有问题。主要是奇怪但是当Windows任务管理器窗口打开时,在加载大文件时Firefox或Chrome不会再崩溃。也许这个TOP窗口的存在迫使垃圾收集器更快地完成它的工作?
有没有人遇到过这个问题?作为参考,我加入了一个可以重现行为的简单HTML页面。
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function ()
{
$("#btnFile").change(startUpload);
});
function startUpload(e)
{
this.fileHandle = e.target.files[0];
var reader = new FileReader();
reader.onprogress = function (data)
{
if (data.lengthComputable)
{
var progress = parseInt(((data.loaded / data.total) * 100), 10);
$("#progress").html("Reading file: " + progress + " %");
}
};
reader.onloadend = function ()
{
$("#progress").html("Reading completed!");
};
reader.onerror = function (errorEvent)
{
console.error("FileReader error", errorEvent);
};
reader.readAsDataURL(this.fileHandle);
};
</script>
</head>
<body>
<input type="file" id="btnFile" />
<div id="progress"></div>
</body>
</html>