HTML5オフラインストレージ。ファイルストレージ?ディレクトリとファイルシステムAPI

StackOverflow https://stackoverflow.com/questions/3936736

質問

データをオフラインで保存するには、WebAppを使用できます。

しかし、どうやらファイルストレージはありません。もちろん、aがあります マニフェストベースのキャッシュ, 、しかし、それは単なるキャッシュであり、ユーザーデータストレージとして使用されることは想定されていません。

WebAppのユーザーが何らかのクラウドファイルストレージを使用することを余儀なくされていることを意味しますか?

ユーザーのローカルマシンに大きなファイルを保存する方法はありますか?または、ローカルフォルダーWebアプリケーションを選択する方法を選択するには、ユーザーデータの保存に使用できますか?

編集. 。安全。 HTML5には、ユーザーのローカルマシンに大量のデータを書き込む機能が既にあります。ブラウザがデータを保存するための別のファイルベースの抽象化を提供する場合、セキュリティの問題はありません。それは、仮想マシン、仮想ファイルシステムなど、何でもすることができます。

うーん、JSファイルシステムを作成して、SQLにブロブとして保存することが可能だと思います...

似ている 質問.

アップデート:hm ...最近見つけました これこれ. 。多分それは私が探しているものです...はい、そうです!以下の答えを参照してください。

役に立ちましたか?

解決

ついに、私はそれを見つけました!これが答えです:

読み取り/書き込みアクセスの側面を備えたdomfilesystemをお願いします 書きました:

GoogleのEric Uhrhaneは、 ファイルAPI:ディレクトリとシステム仕様 これにより、APIのセットを定義して、Webアプリがデータを読み書きできるサンドボックスファイルシステムを作成します。

わお!私はとても興奮しています!

他のヒント

使ってみませんか localStorage ユーザーがドキュメントを編集している間 FileWriter APIディスクに保存したいときは?ほとんどの人は、ドキュメントを保存する際にダイアログがポップアップするのを見ることに慣れています。

私が考えることができる唯一のシナリオは、 FileWriter APIはAutoSave機能ですが、自動保存です localStorage 同じくらい良いかもしれません。

Flashを使用する場合に、比較的大きなファイルをユーザーのハードドライブに保存する方法があります。 lownlownifyを調べてください:

http://www.bitrepository.com/downloadify-client-side-file-generation.html

Downloadifyを使用すると、SWFにデータを送信し、SWFにユーザーマシンにファイルを作成できるようにします。私の推奨事項は、リストしたメソッドの1つ、WebStorage、SQLiteデータベースなどを介してデータを保存することです。SWFを含むすべての資産をマニフェストファイルに入れて、すべてがブラウザにローカルにキャッシュされるようにします。その後、DBまたはWebStorageから情報を取得し、SWFを使用して必要なファイルを作成できます。

これらのファイルをWebアプリケーションに戻すことができるかどうかはわかりません。

データを保存する別のオプションは、リンクタグを使用することです。 データURIスキーム. 。ただし、現時点ですべての主要なブラウザでサポートされているかどうかはわかりません。

セキュリティ上の理由から、邪悪な人々が悪意のある目的で使用される場合に備えて、ユーザーのローカルファイルシステムにファイルを書き込むことはできません。

それは変わる可能性は低く、それは良いことです。

HTML5ファイルシステムAPIは、Chrome 8に着陸し始め、現在はかなり完全です(Chrome 11)。

ここには素晴らしいチュートリアルがあります: http://www.html5rocks.com/tutorials/file/filesystem/

http://fsojs.com 簡単なソリューションが必要な場合、ファイルシステムAPIを効果的にラップします

ここで他の人が述べたように、 filewriterファイルシステム APIは、ブラウザタブ/ウィンドウのコンテキストからクライアントのマシンにファイルを保存するために使用できます。

ただし、これらのAPIに関連するものがいくつかあります。

  • APIの実装は現在、Chromiumベースのブラウザ(Chrome&Opera)にのみ存在します
  • 両方のAPIは、2014年4月24日にW3C標準トラックから除外され、現在は独自です
  • 将来のブラウザの実装からの(現在の独自の)APIの削除は可能性があります
  • a サンドボックス (ファイル以外のディスク上の場所は効果を生成できない)APIで作成されたファイルを保存するために使用されます
  • a 仮想ファイルシステム (ブラウザ内からアクセスしたときと同じ形式のディスクに必ずしも存在するわけではないディレクトリ構造)が使用されますAPIで作成されたファイルを表します

孤立したストレージ, 、まだ言及されていないので、タブ/ウィンドウのコンテキストからファイルI/Oも許可されていますが、Silverlightを通じてのみ利用可能になり、の使用が必要です 管理コード アクセスするために。ファイルシステムと同様に、サンドボックスにも存在し、仮想ファイルシステムを使用します。

ChromiumベースのブラウザとSilverlightの両方の市場浸透率が高いことを考えると(このようなブラウザによって十分に削除されたサポート)、クライアントマシンで利用可能な上記のアプローチを満足させるソリューションを見つけることができます。

BakedGoods, 、すべてのネイティブ(ファイルシステムを含む)および一部の非ネイティブ(孤立したストレージを含む)ストレージ施設で共通のストレージ操作を実行するために使用できる均一なインターフェイスを確立するJavaScriptライブラリは、そのような解決策の例です。

//Write file to first of either FileSystem or IsolatedStorage
bakedGoods.set({
    data: [{key: "testFile", value: "Hello world!", dataFormat: "text/plain"}],
    storageTypes: ["fileSystem", "silverlight"],
    options: {fileSystem:{storageType: Window.PERSISTENT}},
    complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});

完全な透明性のために、BakedGoodsはこの男によってここに維持されています:)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top