내 응용 프로그램은 createObjectURL
으로 생성 된 로컬 이미지 파일에 많은 blob 참조를 사용합니다.BLOB url 참조를 가져 와서 filereader API로 올바르게 읽으려면 어떻게해야합니까?
이러한 blob url 참조를 본질적으로 자바 스크립트 file
개체로 변환하여 업로드해야합니다.
var bloburl = 'blob:3c9230a9-55ea-4357-a2d3-db97673a1947';
$.ajax({
url : bloburl, //Blob URL reference
type : 'GET',
processData : false,
contentType : false,
success: function(file) {
//Here I am attempting to build an object that can be read by the FileReader API
var blob = new Blob([file], { type: 'image/jpeg' });
self.cache.filestoupload.push(blob);
}
});
self.cache.filestoupload
배열은 응용 프로그램이 후, 처음 몇 바이트를 얇게, 배열의 첫 번째 파일을 공격하기 시작 채워되면 fileReader API를 통해 이진 문자열로 읽습니다. 이 파일 조각은 웹 작업자에게 전달되고 이미지 exif 데이터가 읽혀집니다. 그런 다음 마지막으로 전체 파일을 업로드하기 시작합니다.
var binaryReader = new FileReader();
binaryReader.onload = function (e) {
worker.postMessage({
guid: fileindex,
binary_string: binaryReader.result
});
};
binaryReader.readAsBinaryString(filePart);
모든 것은 HTML <input>
요소에서 표준 방식으로 검색 할 파일을 완벽하게 작동합니다.
그러나 blob URL을 통해 참조되고 ajax 요청을 통해 검색된 다음 슬라이스되어 fileReader API에 전달 될 때 동일한 파일이 실패합니다. exif 데이터는 반환되지 않으며 파일이 서버로 업로드되지만 업로드를 처리하는 매우 동일한 PHP 스크립트도 실패합니다.
파일을 올바르게 검색하지 않는 것으로 보입니다. 내가 어디로 잘못 가고 있니?
내가createObjectURL
에 참조 된 파일을 검색하고 표준 인 것처럼 같은 형식으로 파일 리더로 전달할 수 있어야합니다, 요약하면 자바 스크립트
file
객체
UPDATE :
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.responseType = 'blob';
xhr.onreadystatechange = function(e) {
if (xhr.readyState == 4) {
var myBlob = this.response;
self.cache.filestoupload.push(myBlob);
}
};
xhr.send();
나도 같은 사용하여 jQuery의 $ 아약스 운전 방식을 할 수있는 방법 : 좋아 나는 다음과 같은 표준 XHR 요청을 사용하여 작업을 만들었습니다 디?