2017-01-28 2 views
-1

자바 스크립트에서 새 파일 객체를 인스턴스화하는 데 문제가 있습니다.새 파일 객체 자바 스크립트를 인스턴스화하는 방법

다음은 내가하려는 일의 일반적인 요지입니다. "파일"유형의 객체를 예상하는 클라이언트 측 코드가 있습니다. 서버 (game.smc)에있는 파일에 액세스하여 로컬 컴퓨터에 다운로드하고 클라이언트 측 코드에 제공해야합니다.

몇 가지 조사를 해보았 고 새 BLOB 객체를 만드는 것이 첫 번째 단계라는 것을 알았습니다. 그러나 아래의 코드에서 blob 객체는 null로 남아 있으며 절대로 채워지지 않습니다. xhr.open의 경로에 전체 URL이 있어야합니까? 어쩌면 나는 여기 전체 개념을 놓치고있다.

var blob = null; 
var xhr = new XMLHttpRequest(); 
xhr.open("GET", "/Roms/game.smc"); 
xhr.responseType = "blob"; 
xhr.onload = function() 
{ 
    blob = xhr.response; 
} 
xhr.send(); 

일단 BLOB 객체가 채워지면이 작업을 수행하여 파일 객체로 변환 할 수 있습니다.

function blobToFile(theBlob, fileName) { 
     theBlob.lastModifiedDate = new Date(); 
     theBlob.name = fileName; 
     return theBlob; 
    } 

답변

0

이것이 내가 한 일입니다. blob 객체를 가져 와서 파일 유형으로 변환하는 방법을 보여줍니다.

function autoLoadGame(fileName) { 
    var gameLocation = '/Content/Roms/Snes/' + fileName; 
    var blob = null; 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", gameLocation, true); 
    xhr.onreadystatechange = function() { 
     if (xhr.readyState == XMLHttpRequest.DONE) { 
      var blob = xhr.response; 
      var file = new File([blob], fileName, { type: '', lastModified: Date.now() }); 
      snes_readfile(file); 
     } 
    } 
    xhr.responseType = "blob"; 
    xhr.send(); 
}