[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/systemctls/javascript-tutorial/master/docs/bom/arraybuffer.md [Back]  [Original]

# ArrayBuffer Blob ## ArrayBuffer ArrayBuffer JavaScript ES6 ES6 `ArrayBuffer()` ```javascript var buffer = new ArrayBuffer(8); ``` `buffer`8 ArrayBuffer `byteLength` ```javascript var buffer = new ArrayBuffer(8); buffer.byteLength // 8 ``` ArrayBuffer `slice()`0 ```javascript var buf1 = new ArrayBuffer(8); var buf2 = buf1.slice(0); ``` ## Blob ### Blob Blob Binary Large Object ArrayBuffer ArrayBuffer `Blob()` ```javascript new Blob(array [, options]) ``` `Blob``Blob``type` MIME ```javascript var htmlFragment = ['hey!']; var myBlob = new Blob(htmlFragment, {type : 'text/html'}); ``` `myBlob``text/html` Blob JSON ```javascript var obj = { hello: 'world' }; var blob = new Blob([ JSON.stringify(obj) ], {type : 'application/json'}); ``` ### `Blob``size``type` ```javascript var htmlFragment = ['hey!']; var myBlob = new Blob(htmlFragment, {type : 'text/html'}); myBlob.size // 32 myBlob.type // "text/html" ``` `Blob``slice``Blob` ```javascript myBlob.slice(start, end, contentType) ``` `slice`0`size` ### ```value` FileList File File Blob `name``lastModifiedDate` ```javascript // HTML // function fileinfo(files) { for (var i = 0; i < files.length; i++) { var f = files[i]; console.log( f.name, // f.size, // Blob f.type, // Blob f.lastModifiedDate // ); } } ``` API `dataTransfer.files`FileList File ### AJAX `responseType``blob` Blob ```javascript function getBlob(url, callback) { var xhr = new XMLHttpRequest(); xhr.open('GET', url); xhr.responseType = 'blob'; xhr.onload = function () { callback(xhr.response); } xhr.send(null); } ``` `xhr.response` Blob ### URL `URL.createObjectURL()` Blob URL API URL `blob://` Blob Blob `data://URL`URL `file://URL` ```javascript var droptarget = document.getElementById('droptarget'); droptarget.ondrop = function (e) { var files = e.dataTransfer.files; for (var i = 0; i < files.length; i++) { var type = files[i].type; if (type.substring(0,6) !== 'image/') continue; var img = document.createElement('img'); img.src = URL.createObjectURL(files[i]); img.onload = function () { this.width = 100; document.body.appendChild(this); URL.revokeObjectURL(this.src); } } } ``` URL Blob URL URL Blob 404403Blob URL GET 200 Blob URL URL ### Blob `FileReader` Blob FileReader Blob Blob - `FileReader.readAsText()` UTF-8 - `FileReader.readAsArrayBuffer()` ArrayBuffer - `FileReader.readAsDataURL()` Data URL - `FileReader.readAsBinaryString()` `FileReader.readAsText()` ```javascript // HTML // //

function readfile(f) {
  var reader = new FileReader();
  reader.readAsText(f);
  reader.onload = function () {
    var text = reader.result;
    var out = document.getElementById('output');
    out.innerHTML = '';
    out.appendChild(document.createTextNode(text));
  }
  reader.onerror = function(e) {
    console.log('Error', e);
  };
}
```

 FileReader `onload``result`

`FileReader.readAsArrayBuffer()`

```javascript
// HTML 
// 
function typefile(file) {
  //  Blob 
  var slice = file.slice(0, 4);
  var reader = new FileReader();
  // 
  reader.readAsArrayBuffer(slice);
  reader.onload = function (e) {
    var buffer = reader.result;
    // 32
    var view = new DataView(buffer);
    var magic = view.getUint32(0, false);
    // 
    switch(magic) {
      case 0x89504E47: file.verified_type = 'image/png'; break;
      case 0x47494638: file.verified_type = 'image/gif'; break;
      case 0x25504446: file.verified_type = 'application/pdf'; break;
      case 0x504b0304: file.verified_type = 'application/zip'; break;
    }
    console.log(file.name, file.verified_type);
  };
}
```


Web Proxy Viewer  |  New URL  |  Original Page