我想下载放在不同文件夹中的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>
这会发出警告。
答案 0 :(得分:1)
后人...... 这实际上是来自chrome的错误。
我直接在https://bugs.chromium.org打开了一个帖子。
以下是其中一个chrome开发者的最后一封邮件:
我们会重新评估我们方面的广告系列规则,看看是否值得保留。
自Chrome版本51.0.2704.103 m以来,该错误消失了。