简体   繁体   中英

Read data from BLOB URL in Javascript

I have a BLOB URL, and I want to recreate it as a second BLOB URL, so that it is downloaded by default.

 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); 

See in JSFiddle:

https://jsfiddle.net/7spry3jn/

But this only creates a text file containint the first URL. How can I Read data from the first BLOB URL in Javascript and feed it to create the second BLOB?

You can use the download attr in anchor element, that force the download and you dont need to reate another blob.

But you need to pay attentio about browser support, see here all the browsers that accept the download attr: Can I Use

 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); 

And to read the content from a Blob you can use FileReader like this:

 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> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM