0

私はjavascriptとGoogle Chrome Appでローカルファイルを読み込もうとしています(これはChromeでは不可能かもしれません)。しかし、問題の最新のアプローチがわかりません。Javascript、FileReaderとローカルファイルを読み込むためのXMLHttpRequest?

私は次のコードでそれを読むことができます:

obj.read = function() { 
    return new Promise(function(resolve){ 
     var xmlhttp = new XMLHttpRequest(); 
     var file_path = 'file_name.xml'; 
     xmlhttp.open('GET', file_path, true); 
     xmlhttp.send(null); 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       let xml = xmlhttp.responseText; 
       var parser = new DOMParser(); 
       var xmlDoc = parser.parseFromString(xml, "text/xml"); 
       console.log(xml); 
       console.log(xmlDoc); 
       resolve(xmlDoc); 
      } 
     } 
    }); 
}; 

しかし、私は(私はハードを抱えている(https://stackoverflow.com/a/24495213/826815からコピー)

var reader = new FileReader(); 
reader.onload = (function(theFile) { 
    return function(e) { 
     console.log(e.target.result); 
    }; 
})(file_path); 

var file_path = 'file_name.xml'; 
var file_parts = [ 
    new Blob(['you construct a file...'],{type: 'text/plain'}), 
    'Same way as you do with blob', 
    new Uint16Array([33]) 
]; 
var file = new File(file_parts, file_path); 
reader.readAsText(file); 

ようなものを使用する必要がありますようにそれがありますこのトピックに関する文献を見つけること)

だから、どうしたらいいですか?

+0

いくつかのことは明確ではありません:1)「私は次のコードで読むことができます」 - なぜそうではないのですか?良いアプローチ?なぜあなたはそれを変更しようとしていますか? 2) "ローカルファイル"とはどういう意味ですか?あなたの例は、あなたのアプリのパッケージ内のファイル用です。それだけでいいの? – Xan

+0

1)それは問題です、それは "良い"アプローチですか? 「第2の」アプローチはありますか?もしそうなら、どちらを選ぶべきですか? 2)ローカルファイルで私は、アプリケーションがあるのと同じフォルダにあるファイルを意味するが、まだパッケージ化していないので、アプリケーションのパッケージ内にあるとしか推測できない – Gerard

答えて

2

最初のアプローチ(パッケージ内のファイルの場合はXMLHttpRequest)は完全に有効であり、必要なのがファイル全体であれば簡単になる可能性があります。あなたは「第二のアプローチ」と呼んで何


は疑問を約ない実際のファイルを読み込み、Fileオブジェクトをインスタンスから持ち上げられます。これにより、既存のファイルを読み込むことはできません。DOMフォームで使用できる「仮想」ファイルを作成するだけです。

HTML FileSystem APIがあります。これはChrome以外には実装されていません。そのようなドキュメントは不十分で、大きな怖い赤い警告が付いています。 は、​​で始まるアプリケーションの状態を読むために実際にそれを使用していますが、これはおそらくあなたの特定のケースでは過剰です。また、そうした例が見つからないでしょう。

私は、App自身のファイルのためのFileSystem APIである獣の眠りを邪魔する唯一の二つの理由を考えることができます:あなたが含まれているどのようなファイルが、実行時には、知らない

  1. 。その後、use it to list filesすることができます。まれですが、可能です。
  2. "私にすべてのことを教えてください"よりも細かいアクセスが必要です。たとえば、大きなファイルのチャンクが必要な場合などです。

FileSystem APIは、主にChromeでchrome.fileSystem Apps API用に使用されています。 Chromeがしばらくの間Chrome OS上でChromeアプリをサポートする予定であることを考慮すると、非標準であるにもかかわらず、それはそのまま残ります。

存続ドキュメント:

関連する問題