RequestFileSystem

RequestFileSystem() 関数のテストです。
次の3個のボタンを順にクリックしてみて下さい。
[requestFileSystem OK]が表示されたら成功です。
使えるの Google Chrome だけでしょうか?
Internet Explore11 や Microsoft Edge では何の反応もありませんでした。
Google Chrome で、サーバーから起動して実行を確認しました。(2018/06/26 確認)
Windows10 & Google Chrome で、サーバーから起動して実行を確認しました。(2020/05/01, 2020/05/26 確認)



【Source Code】
<button onclick="webkit()">webkit</button>
<button onclick="NonePrefix()">None</button>
<button onclick="orPrefix()">or</button>

<script type="text/javascript">
//Chrome Prefix 
function webkit()
{  window.webkitRequestFileSystem(window.TEMPORARY, 1024, onInitFs, errorHandler);
}
//Prefix 無し
function NonePrefix()
{  window.requestFileSystem(window.TEMPORARY, 1024, onInitFs, errorHandler);
}
function orPrefix()
{  window.requestFileSystem = window.requestFileSystem ||
                              window.webkitRequestFileSystem;
   window.requestFileSystem(window.TEMPORARY, 1024, onInitFs, errorHandler);
}

function onInitFs(fs)
{   window.alert("requestFileSystem OK\n" + fs.name);
}
function errorHandler(err)
{   window.alert("requestFileSystem ERROR\n" + err);
}
</script>

  1. HTML5 から File API が使えるようになり、ローカルのファイルをブラウザ上で直接取り扱えるようになりました。
    所が、ファイル入力は出来ても、ファイル出力は一苦労です。
    最初の難所が RequestFileSystem() 関数です。
    そこでファイル出力に先駆けて RequestFileSystem() 関数のテストをするページを作成します。
  2. RequestFileSystem() 関数の仕様です。
    window.requestFileSystem(type, size, successCallback, opt_errorCallback)
    
    1. type
      持続的なファイルストレージにするかどうか。
      使用できる値は window.TEMPORARY または window.PERSISTENT です。
      TEMPORARY を使用して保存したデータは、ブラウザの裁量で削除できます。
      PERSISTENT ストレージは、ユーザーが明示的に承認しない限り消去できません。
      使用するためにはユーザーがアプリケーションに対してクオータを許可する必要があります。
    2. size
      アプリケーションがストレージとして必要とするサイズ(バイト単位)。
    3. successCallback
      ファイル システムの要求が成功したときに呼び出されるコールバック。
      引数は FileSystem オブジェクトです。
    4. opt_errorCallback
      エラー処理のコールバック。
      引数は FileError オブジェクトです。
  3. このページの RequestFileSystem() 関数の呼び出し方です。
    webkit は Chrome のベンダープリフィックスです。
    function webkit()
    {  window.webkitRequestFileSystem(window.TEMPORARY, 1024, onInitFs, errorHandler);
    }
    
    ベンダープリフィックス無しで呼び出します。
    function NonePrefix()
    {  window.requestFileSystem(window.TEMPORARY, 1024, onInitFs, errorHandler);
    }
    
    Chrome プリフィックスと無しを or で演算して呼び出します。
    function orPrefix()
    {  window.requestFileSystem = window.requestFileSystem ||
                                  window.webkitRequestFileSystem;
       window.requestFileSystem(window.TEMPORARY, 1024, onInitFs, errorHandler);
    }
    
  4. 私は何度もこの関数にチャレンジしたのですが、なかなか動きませんでした。
    どうやら現在動作するのは Google Chrome だけで、Internet Explore11 や Microsoft Edge では実行出来ないようです。
    また、ローカル環境ではエラーが表示され、サーバーにアップロードして初めて成功しました。

前田稔の超初心者のプログラム入門
超初心者のプログラム入門(JavaScript)