使用JavaScript将二进制数据下载到文件

3

我希望使用JavaScript上传和下载文件。

步骤1:我将上传的文件转换为二进制代码,并通过Web API成功地将二进制代码发送到服务器。

       var SA_Supp_Evidence_Object_File = null;
        var Evidence_file_name = null;

        if (document.getElementById("file").files.length != 0) {
            SA_Supp_Evidence_Object_File = document.getElementById('file').files[0];

            var fr = new FileReader;
            fr.onloadend = function () {
                alert(fr.result);
            };
            fr.readAsBinaryString(SA_Supp_Evidence_Object_File);

            Evidence_file_name = SA_Supp_Evidence_Object_File.name;
        };

步骤2:现在我想从数据库中检索相同的数据,并通过点击链接进行下载。

<td><a href="_self">Download</a></td>

有人能帮我解决这个问题吗?

我尝试过像这样:

var data = 'data:text/plain;base64,'+L_EncodedData;
document.location = data;
1个回答

2

您需要更改 <a>href 属性,以包含您希望用户下载的数据。您不希望通过 document.location 进行重定向,而是应该在锚点本身中包含数据。

例如:

var a = document.body.appendChild(
    document.createElement("a")
);
a.download = "filename.dat";
a.href = "data:text/plain;base64," + L_EncodedData;
a.innerHTML = "download";

<a href="data:image/jpeg;base64,skjdfbsdhfbsmhdfbsmdhfvbsdvfnsdvfnsdfvsndvfnsdvfnsdvbfbnsdvbfnsd sdmfsdvbnbfbvsdnbfvsndbfvnsdbvfnsdvfnsdbfnsdbvfsndbvfnsdbvfsnd smdmfvsmndbvfnsbdvfsdnbfvsndbfvsdbnfvsbdfvsdb" download="filename.png">sdfsdfsdfs</a> 在IE中无法正常工作。 - user5383264
IE目前还不完全支持内联数据。https://zh.wikipedia.org/wiki/Data_URI_scheme - Ian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接