Webページによるクライアントマシン上のファイルへのアクセスに関するいくつかの投稿、つまり question を見てきました。
ユーザーがWebページにアクセスするだけで最新バージョンにアクセスできるように、作成しているアルゴリズムの「クラウドでの継続的な更新」パラダイムを利用しようとしています。これには、プログラム/ウェブページがディレクトリから始まり、その中のファイルを再帰的に検査し、見つかったものに基づいて結果を計算できることが必要です。最後に、結果ファイルをクライアントのファイルシステムに書き込むこともできるはずです。
その前の質問の回答の1つはGoogle Gearsについて言及していますが、それ以降HTML5のために中止されました。 HTML5内でクライアントディレクトリにアクセスできますか?どうやって?
ローカルファイルへのWebページによるアクセスがセキュリティリスクになる理由はわかっていますが、私の目的では、ユーザーに適切なアクセス許可を要求しても問題はありません。
いいえ、少なくとも直接ではありません。ただし、ここにはいくつかの選択肢があります。
現在、あなたの最良の選択は次のとおりです。
multiple
属性を指定すると、個別のフィールドを持たなくても、複数のファイルを一度に読み取って開くことができます。Chrome 6はFile APIもサポートします
前述のように、 FileSystem および File APIは、 FileWriter APIとともに、アプリケーションのコンテキストからファイルを読み書きするために使用できます。ブラウザのタブ/クライアントマシンへのウィンドウ。
FileSystem APIとFileWriter APIに関連するいくつかの事項に注意する必要があります。これらのいくつかについては言及しましたが、繰り返す価値があります。
以下は、これらのことを行うためにAPIが直接および間接的に連携して使用される方法の簡単な例です。
ファイルを書き込む:
bakedGoods.set({
data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
ファイルを読む:
bakedGoods.get({
data: ["testFile"],
storageTypes: ["fileSystem"],
options: {fileSystem:{storageType: Window.PERSISTENT}},
complete: function(resultDataObj, byStorageTypeErrorObj){}
});
未加工のFile、FileWriter、およびFileSystem APIの使用
ファイルを書き込む:
function onQuotaRequestSuccess(grantedQuota)
{
function saveFile(directoryEntry)
{
function createFileWriter(fileEntry)
{
function write(fileWriter)
{
var dataBlob = new Blob(["Hello world!"], {type: "text/plain"});
fileWriter.write(dataBlob);
}
fileEntry.createWriter(write);
}
directoryEntry.getFile(
"testFile",
{create: true, exclusive: true},
createFileWriter
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, saveFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
ファイルを読む:
function onQuotaRequestSuccess(grantedQuota)
{
function getfile(directoryEntry)
{
function readFile(fileEntry)
{
function read(file)
{
var fileReader = new FileReader();
fileReader.onload = function(){var fileData = fileReader.result};
fileReader.readAsText(file);
}
fileEntry.file(read);
}
directoryEntry.getFile(
"testFile",
{create: false},
readFile
);
}
requestFileSystem(Window.PERSISTENT, grantedQuota, getFile);
}
var desiredQuota = 1024 * 1024 * 1024;
var quotaManagementObj = navigator.webkitPersistentStorage;
quotaManagementObj.requestQuota(desiredQuota, onQuotaRequestSuccess);
FileSystem APIとFileWriter APIの現在のステータスを考えると、ファイルの読み取りと書き込みへのそれらの使用は、現在、これらのことを行う「HTML5の方法」を構成していません。
ただし、実装されていないブラウザベンダーからのAPIへの関心が高まっているため、標準化の道筋に戻る可能性があります。それは、Chromiumベースのブラウザーの高い市場浸透と、Google(Chromiumへの主な貢献者)がAPIに提供しておらず、サポート終了日がAPIに与えられていないという事実と相まって、場合によってはAPIの使用を正当化するのに十分なはずです。
* BakedGoodsは、この男以外の誰もがここで管理しています:)