3

JavaScriptとHTML5でアプリを作成しています。特定のファイルにデータを書き込む必要があるので、ファイルへのパスをコードで設定したいと思います。でそれを行うことは問題ではありません:

function onInitFs(fs) {
    console.log('Opened file system: ' + fs.name);
}
window.webkitRequestFileSystem(window.TEMPORARY, 5 * 1024 * 1024 /* 5MB */, onInitFs, errHandl);

--allow-file-access-from-filesただし、問題は、 exeファイルに設定されていないため、セキュリティエラーが発生することです。すべてのページにハードに設定したくありません。ローカルファイルシステムから開いているページにのみ設定したい

たとえば、index.htmlのようになります。

C:\page\index.html.

それを行う方法はありますか?

私はmanifest.jsonについて知っていますが、Chromeストアを介してアプリを配布する必要があることを意味します。それは私には受け入れられません、私のプロジェクトはそのように意味をなさないでしょう。

4

1 に答える 1

1

FileAPI の考え方は、OS ファイル システムを管理することではなく、サンドボックス化された仮想ファイル システムを持つことです。ユーザーのドライブから任意のファイルを編集することはできません。これは大きなセキュリティ ホールになります。

おそらくやりたいことは、ページを動的に生成することです。以下の例のように、最初のコンテンツ (html) が保存され、次に読み込まれてページに追加されます。

function onInitFs(fs) {
  console.log('Opened file system: ' + fs.name);

  fs.root.getFile(FILE_NAME, {create: true}, function(fileEntry){
    fileEntry.createWriter(function(fw){
      fw.onwriteend = function(e){ console.info('Write completed'); }
      fw.onerror = function(e){ console.log('Error:'+e.toString()); }

      var blobToWrite = new Blob(['<span>test</span>'], {type: 'text/plain'});
      fw.write(blobToWrite);
    }, null);

    console.log(fileEntry.toURL());
  }, null);

    fs.root.getFile(FILE_NAME, {}, function(fileEntry) {

    fileEntry.file(function(file) {
       var reader = new FileReader();

       reader.onloadend = function(e) {
         var someDiv = document.createElement('div');
         someDiv.innerHTML = this.result;
         document.body.appendChild(someDiv);
       };

       reader.readAsText(file);
    }, null);

  }, null);
}

それが役立つことを願っています:)

于 2013-10-15T12:05:53.783 に答える