XHR을 통해 ArrayBuffer를 검색하고 FileWriter를 사용하여 FileSystem API에 저장하려고합니다. FileWriter는 Blob을 기대하고 Blob 생성자는 ArrayBuffer를 사용하지 않고 ArrayBufferView를 사용합니다.Which ArrayBufferView
선택할 수있는 ArrayBufferView가 여러 개 있는데, 어떤 것이 올바른지 어떻게 알 수 있습니까?
XHR을 통해 ArrayBuffer를 검색하고 FileWriter를 사용하여 FileSystem API에 저장하려고합니다. FileWriter는 Blob을 기대하고 Blob 생성자는 ArrayBuffer를 사용하지 않고 ArrayBufferView를 사용합니다.Which ArrayBufferView
선택할 수있는 ArrayBufferView가 여러 개 있는데, 어떤 것이 올바른지 어떻게 알 수 있습니까?
는 MDN에서 사용 가능한 모든 ArrayBufferView
서브 클래스의 개요를 찾을 수 있습니다
Type | Size | Description | Equivalent C type
-------------+------+---------------------------------------+------------------
Int8Array | 1 | 8-bit twos complement signed integer | signed char
Uint8Array | 1 | 8-bit unsigned integer | unsigned char
Int16Array | 2 | 16-bit twos complement signed integer | short
Uint16Array | 2 | 16-bit unsigned integer | unsigned short
Int32Array | 4 | 32-bit twos complement signed integer | int
Uint32Array | 4 | 32-bit unsigned integer | unsigned int
Float32Array | 4 | 32-bit IEEE floating point number | float
Float64Array | 8 | 64-bit IEEE floating point number | double
기본적으로,이 배열의 각 항목이 차지하는 어떤 메모리 공간을 나열하고는 일반 번호 또는 FP 번호 인 경우. 잘 알고있는 언어가 무엇인지 잘 모르겠지만 자바를 다루는 경우라면 기본적으로 byte[]
, short[]
, int[]
, float[]
및 double[]
과 같은 선택입니다 (자바는 항상 서명되어 있으므로 부분은 중요하지 않음).
우리는 이미지와 같은 바이너리 데이터는 일반적으로 바이트 배열로 표시됩니다. 짧은/int/long 배열도 가능하지만 이는 메모리 공간의 낭비입니다. 바이트 배열 대신 int 배열에 100KB 이미지 ("B"는 8 비트 인 바이트를 나타냅니다.)를 저장하면 300KB의 낭비 인 400KB의 메모리를 차지합니다. 그래서 가장 작은 것, Int8Array
, 이미 메모리 공간에 관해서는 충분할 것입니다. 혹시 프로그래밍 그것을 서명되지 않은 배열로이 경우 — 매우 가능성이 —을 통과하려는 경우 각 항목 0
255
에 대신 값 127
에 -128
의 값을 보유하는 대신 경우에, 당신은 Uint8Array
를 선택할 수 있습니다.
서버에서 이미지 파일을 다운로드하여 임시 로컬 저장 공간에 저장하고 본체에 <img>
으로 표시하는 '복사 할 수 없음'실행 가능 킥오프 예제입니다 (작은 jQuery가 필요합니다. 부품). 이 작동 current 상태로,
window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem;
window.requestFileSystem(window.TEMPORARY, 1024*1024, startDownload, errorHandler);
var errorHandler = function(error) {
console.log('FS error: ' + error);
}
var xhr = new XMLHttpRequest();
xhr.open('GET', 'image.png', true);
xhr.responseType = 'arraybuffer';
function startDownload(fileSystem) {
xhr.onload = function(event) {
var content = new Int8Array(this.response);
fileSystem.root.getFile('/image.png', { 'create': true }, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(event) {
$('body').append('<p>Image successfully downloaded:</p>')
.append('<p><img src="' + fileEntry.toURL() + '"/></p>');
};
var blob = new Blob([content], { type: 'image/png' });
fileWriter.write(blob);
}, errorHandler);
});
}
xhr.send();
}
참고 :이 예제 파일에서 다운로드 한 image.png
파일 (또는 HTML JS가 인라인 경우) JS와 같은 기본 폴더에있는 것으로 가정 Chrome에서만 사용할 수 있습니다.
JSON은 어떻게 사용합니까? –