2013-04-30 5 views
1

내 응용 프로그램은 createObjectURL으로 생성 된 로컬 이미지 파일에 많은 blob 참조를 사용합니다.BLOB url 참조를 가져 와서 filereader API로 올바르게 읽으려면 어떻게해야합니까?

이러한 blob url 참조를 본질적으로 자바 스크립트 file 개체로 변환하여 업로드해야합니다.

내가 아래 표와 같이 jQuery의 아약스 기능을 가지고있는 모양을 검색하려면 다음

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 요청을 사용하여 작업을 만들었습니다 디?

답변

관련 문제