我有一个 BLOB URL,我想将其重新创建为第二个 BLOB URL,以便默认下载它。
var blob1 = new Blob(["Hello world!"], { type: "text/plain" });
url1 = window.URL.createObjectURL(blob1);
blob2=new Blob([url1], {type: 'application/octet-stream'});
url2 = window.URL.createObjectURL(blob2);
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = url2;
a.click();
window.URL.revokeObjectURL(url);
请参见 JSFiddle:
https://jsfiddle.net/7spry3jn/ https://jsfiddle.net/7spry3jn/
但这只会创建一个包含第一个 URL 的文本文件。如何从 Javascript 中的第一个 BLOB URL 读取数据并将其提供给创建第二个 BLOB?
您可以使用download
属性输入anchor
元素,强制下载并且您不需要创建另一个 blob。
但你需要注意浏览器支持,在这里查看所有接受的浏览器download
attr: 我可以用吗 http://caniuse.com/#search=download
var blob1 = new Blob(["Hello world!"], { type: "text/plain" });
url = window.URL.createObjectURL(blob1);
var a = document.createElement("a");
document.body.appendChild(a);
a.style = "display: none";
a.href = url;
a.setAttribute("download","Any name");
a.click();
window.URL.revokeObjectURL(url);
并从 a 读取内容Blob
您可以使用FileReader
像这样:
var myBlob = new Blob(["Hello"], {type : "text/plain"});
var myReader = new FileReader();
//handler executed once reading(blob content referenced to a variable) from blob is finished.
myReader.addEventListener("loadend", function(e){
document.getElementById("text").innerHTML = e.srcElement.result;//prints a string
});
//start the reading process.
myReader.readAsText(myBlob);
<p id="text"></p>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)