使用FileReader时在Firefox或Chrome中崩溃

时间:2013-05-29 16:00:22

标签: google-chrome firefox crash filereader

我们尝试使用客户端上的“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>

0 个答案:

没有答案