- Send binary data
var oReq = new XMLHttpRequest(); oReq.open("POST", url, true); oReq.onload = function (oEvent) { // Uploaded. }; var blob = new Blob(['abc123'], {type: 'text/plain'}); oReq.send(blob);
perhaps
var myArray = new ArrayBuffer(512); var longInt8View = new Uint8Array(myArray); for (var i=0; i< longInt8View.length; i++) { longInt8View[i] = i % 255; } var xhr = new XMLHttpRequest; xhr.open("POST", url, false); xhr.send(myArray);
- Receive binary data
var oReq = new XMLHttpRequest(); oReq.open("GET", "/myfile.png", true); oReq.responseType = "arraybuffer"; oReq.onload = function (oEvent) { var arrayBuffer = oReq.response; // Note: not oReq.responseText if (arrayBuffer) { var byteArray = new Uint8Array(arrayBuffer); for (var i = 0; i < byteArray.byteLength; i++) { } } }; oReq.send(null);
The above settings can only be text type. If it is Blob type:
var oReq = new XMLHttpRequest(); oReq.open("GET", "/myfile.png", true); oReq.responseType = "arraybuffer"; oReq.onload = function(oEvent) { var blob = new Blob([oReq.response], {type: "image/png"}); // ... }; oReq.send();
perhaps
var oReq = new XMLHttpRequest(); oReq.open("GET", "/myfile.png", true); oReq.responseType = "blob"; oReq.onload = function(oEvent) { var blob = oReq.response; // ... }; oReq.send();
Older browsers:
function load_binary_resource(url) { var req = new XMLHttpRequest(); req.open('GET', url, false); //XHR binary charset opt by Marcus Granado 2006 [http://mgran.blogspot.com] req.overrideMimeType('text\/plain; charset=x-user-defined'); req.send(null); if (req.status != 200) return ''; return req.responseText; }
Above reference https://www.jb51.net/article/85087.htm
ArrayBuffer, TypedArray, and Blob usage
var ab = new ArrayBuffer(32) var iA = new Int8Array(ab) iA[0] = 97;//The first place of binary data is changed to 97, which is the ascll code of lowercase a; var blob = new Blob([iA], {type: "application/octet-binary"});//Convert binary code to blob type var url = URL.createObjectURL(blob); window.open(url)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="file" id="f"> <script> var eF = document.getElementById("f"); eF.onchange = function() { var file = eF.files[0]; console.log(file instanceof Blob) } </script> </body> </html>
FileReader read area blob file
var ab = new ArrayBuffer(32) var iA = new Int8Array(ab) iA[0] = 97 var blob = new Blob([iA], {type: "application/octet-binary"}); var fr = new FileReader(); fr.addEventListener("load", function(ev) { console.log(ev.target.result);//Will output character: a }); fr.readAsText(blob)
blob to typearray
If you want to convert blob files to binary data, you need to first convert blob files to arraybuffer, and then use typedArray to edit binary data directly
var ab = new ArrayBuffer(32) var iA = new Int8Array(ab) iA[0] = 97 var blob = new Blob([iA], {type: "application/octet-binary"}); var fr = new FileReader(); fr.addEventListener("load", function(ev) { var abb = ev.target.result; var iAA = new Int8Array(abb); console.log(iAA); }); //Convert blob file to arraybuffer; fr.readAsArrayBuffer(blob)
Above reference https://www.cnblogs.com/diligenceday/p/5998806.html
Recommended articles: File and binary data operation of new HTML5 features