gpt4 book ai didi

javascript - 下载被 Chrome 阻止的(是否为空)xml 和 svg 文件的 zip 存档

转载 作者:行者123 更新时间:2023-11-30 00:12:27 25 4
gpt4 key购买 nike

我想下载放在不同文件夹中的 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 m)。我在 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>

这给出了警告。

最佳答案

为了后代...这实际上是 Chrome 的一个错误。

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

这是 chrome 开发者之一的最后一封邮件:

We will re-evaluate the campaign rule on our side to see if it is worth keeping.

从 Chrome 版本 51.0.2704.103 m 开始,该错误消失了。

关于javascript - 下载被 Chrome 阻止的(是否为空)xml 和 svg 文件的 zip 存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35896136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com