下载Chrome阻止的(空的或非空的)xml和svg文件的zip存档

时间:2016-03-09 15:43:12

标签: javascript google-chrome

我想下载放在不同文件夹中的xml和svg文件的zip存档:

+archive.zip
   +imgs
       test.svg
       test1.svg
       test2.svg
   +xml
       highway.xml

如果我在imgs文件夹中放置了三个以上的svg文件(即使是空的svg和xml文件),Chrome会将存档检测为恶意文件。

我使用Chrome 48和49测试(我目前的Chrome版本是49.0.2623.87米)。 我对Firefox 44和IE 10没有任何问题。

这是我的简单html页面(读取和下载文件):

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>

        <button id="readAndDownloadButton" type="button" onclick="toggleSelectFileInput()" class="clickable">readAndDownloadButton</button>

        <input id="zippedConfigFileInput"
               type="file"
               name="zippedConfigFile" 
               style="display: none" 
               onchange="readAndDownloadFile()"
               accept="application/zip" />

        <script>
            function toggleSelectFileInput() {
                var inputSelect = document.getElementById('zippedConfigFileInput');
                inputSelect.click();
            }

            function readAndDownloadFile() {
                var inputElement = document.getElementById('zippedConfigFileInput');
                var file = inputElement.files[0];

                var fr = new FileReader();

                fr.addEventListener("loadend", function() {
                    var resultStr = fr.result;

                    downloadFile(file.name, resultStr);
                });

                fr.readAsDataURL(file);
            }


            function downloadFile(name, uri) {
                var link = document.createElement("a");
                link.download = name;
                link.href = uri;
                document.body.appendChild(link);
                link.click();
                document.body.removeChild(link);
            }
        </script>

    </body>
</html>

我已经测试了这个由Glassfish 4.1服务器本地服务的页面,然后通过直接读取html文件(没有服务器)给出相同的效果。

我不明白为什么Chrome会将此存档检测为恶意文件!

如果我删除xml文件夹或一个svg文件,请按预期下载工作。

更新 我做了一些测试,看来Chrome不想为某些文件下载FileReader.readAsDataURL的结果。

我做了一个只有一个链接的新测试页面,并且href是FileReader.readAsDataURL给出的zip存档(带有空的svg和xml文件)的结果:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>

        <a href="data:application/x-zip-compressed;base64,UEsDBBQAAAAAAOd9aUgAAAAAAAAAAAAAAAAPAAAAeG1sL2hpZ2h3YXkueG1sUEsDBBQAAAAAACF/aUgAAAAAAAAAAAAAAAANAAAAaW1ncy90ZXN0LnN2Z1BLAwQUAAAAAAAhf2lIAAAAAAAAAAAAAAAAFQAAAGltZ3MvdGVzdCAtIENvcGllLnN2Z1BLAwQUAAAAAAAhf2lIAAAAAAAAAAAAAAAAGQAAAGltZ3MvdGVzdCAtIENvcGllICgyKS5zdmdQSwECFAAUAAAAAADnfWlIAAAAAAAAAAAAAAAADwAAAAAAAAAAACAAAAAAAAAAeG1sL2hpZ2h3YXkueG1sUEsBAhQAFAAAAAAAIX9pSAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAgAAAALQAAAGltZ3MvdGVzdC5zdmdQSwECFAAUAAAAAAAhf2lIAAAAAAAAAAAAAAAAFQAAAAAAAAAAACAAAABYAAAAaW1ncy90ZXN0IC0gQ29waWUuc3ZnUEsBAhQAFAAAAAAAIX9pSAAAAAAAAAAAAAAAABkAAAAAAAAAAAAgAAAAiwAAAGltZ3MvdGVzdCAtIENvcGllICgyKS5zdmdQSwUGAAAAAAQABAACAQAAwgAAAAAA">Download</a>

    </body>
</html>

这会发出警告。

1 个答案:

答案 0 :(得分:1)

后人...... 这实际上是来自chrome的错误。

我直接在https://bugs.chromium.org打开了一个帖子。

以下是其中一个chrome开发者的最后一封邮件:

  

我们会重新评估我们方面的广告系列规则,看看是否值得保留。

自Chrome版本51.0.2704.103 m以来,该错误消失了。