2017-01-28 8 views
-1

javascriptで新しいファイルオブジェクトをインスタンス化する際に問題が発生しています。新しいファイルオブジェクトをインスタンス化する方法javascript

ここに私がしようとしていることの一般的な要点があります。 "ファイル"タイプのオブジェクトが必要なクライアントサイドコードがあります。サーバー(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(); 
} 
関連する問題