2013-08-29 9 views
5

HTML5を使用してオフラインアプリケーションを作成しました。これは、indexedDBまたはlocalStorageにデータを格納することです。オンラインの場合、ローカルストレージとオンラインデータベースは同期されます。画像をアップロードする機能を追加するまでは、すべて問題ありません。HTML5オフラインアプリケーションで画像を操作しますか?

1)アプリケーションはオフラインで動作するので、サーバーに画像をアップロードすることはできません。どこに配置するのですか?

可能なソリューション:

  • オフライン、ユーザーがオンラインになったときに、パスを保存し、入力要素を作成し、その値の属性にパスを割り当てることにより、画像をアップロードします。このアプローチの問題は、入力要素のvalue属性を変更できず、アップロードする画像の完全なパスを取得できないことです。この解決法は本当に可能ではないようです。
  • イメージをindexedDBまたはlocalStorageに保存することは可能ですか?

2)イメージをindexedDBまたはlocalStorageに正常に保存すると、ユーザーはオンラインになったらどのようにアップロードするのですか?

可能なソリューション:

  • のWebSocket - 私はまだこれには触れていません。
  • Flash - iPhoneで動作しますか?おそらくそうではありません。

3)イメージをindexedDBまたはlocalStorageに正常に保存した場合、そのイメージをページにどのように表示しますか?イメージ要素はsrc属性を使用して表示するイメージを決定しますが、イメージバイナリのような他のメソッドはありますか?

同じ状況に直面した場合は、目標を達成するためにどのような回避策を実行しましたか?

+1

イメージをbase64文字列に変換して保存してから、Ajaxなどを使用してアップロードできます。また、base64文字列をimg要素の_src_ attrに入れることができます。 –

答えて

6

HTML5で利用可能なFileAPIを使用してください。そこにあなたのイメージを「アップロード」することができます。そして、サーバがオンラインに戻ると、伝統的なXHRを使っても、サーバを転送することができます。 http://caniuse.com/#feat=fileapi

詳細:

1))我々のアプリケーションで定義されている(permamentまたはtemporaryストレージにファイルを書く

FileAPIは、主要なブラウザのほとんどがそれをサポートとして使用しても安全です。 temporaryストレージは、セッションが終了すると消去されます(ブラウザの裁量で)。

は、チュートリアルのためにここを参照してください:http://www.html5rocks.com/en/tutorials/file/filesystem/?ModPagespeed=noscript

2)私はそれらを送信するために、伝統的なXHRequestsを使用します。これは簡単でよくテストされています(最初から新しいプロトコルを設計する必要はありません)。

3)これが最善のことです。File APIから正しいURLを取得できるため、画像はキャッシュから表示されます。ここをクリックしてください:http://www.html5rocks.com/en/tutorials/file/filesystem/?ModPagespeed=noscript#toc-filesystemurls

+0

base64でディスプレイの問題?彼らについて聞いたことがない –

+0

+1 File APIに感謝します!私はそれを勉強します、多分それは私が必要なすべてです。 – dpp

+0

IEをブラウザとして数えれば、はい、問題が発生します。しかし、私はもう一度点検しましたが、以前よりも問題は少ないようです。私はそれについての私のコメントを削除します。 – thriqon

関連する問題