4

大量のファイルにアクセスできる HTML5 アプリケーションを作成しようとしています。そのため、FileSystem API を調べて、ローカル ファイルシステムからファイルを読み取れるようにしました。

phonegap File API を使用して PoC を実行しましたが、すべて期待どおりに機能し、Chrome デスクトップで FileSystem API を使用して同様の結果を得ることができました...

ただし、深刻な問題に直面しています。デスクトップでファイルシステムにアクセスできますが、Android Chrome から sdcard にアクセスできません。このデモを使用しようとしました:

http://html5-demos.appspot.com/static/filesystem/filer.js/demos/index.html

デスクトップのローカル システムからファイルを選択できます: マイ ピクチャなど...しかし、Android Chrome では同じことができません。

Android Chrome でデバイスのファイルシステム /sdcard にアクセスするにはどうすればよいですか?

4

1 に答える 1

5

HTML5 Rocks に関するこの記事から:

このファイル システムはサンドボックス化されていることを覚えておくことが重要です。つまり、ある Web アプリは別のアプリのファイルにアクセスできません。これは、ユーザーのハード ドライブ上の任意のフォルダ (たとえば、マイ ピクチャ、マイ ドキュメントなど) に対してファイルを読み書きできないことも意味します。

FileSystem API は、アプリケーションが次の使用まで保持されるファイルを作成および操作できるように設計されています。サンドボックスの外部から任意のファイルを公開するために使用することはできません。

または、ファイル APIを使用して、システム全体からファイルを読み取ることもできますが、変更することはできません。ただし、File API を使用してシステム上の任意のファイルを読み取ることはできません。その使用法は HTML タグに基づいており<input type=file>、ユーザーは読み取るファイルを明示的に入力する必要があります。

上記は、デスクトップ Chrome の場合と同じように、Android Chrome で実行されているアプリに適用されるため、ユーザーが入力を使用して必要なファイルへのアクセスを許可しない限り、うまくいきません。ただし、PhoneGap を使用した PoC も試みたとおっしゃいました。PhoneGap File APIは、主に HTML5 実装のラッパーとして機能しますが、主に SD カード上の任意のファイルにアクセスできるという点で、いくつかの微妙な違いがあります。API 呼び出しを使用する場合、成功のコールバックにはFileSystemオブジェクトwindow.requestFileSystem()という 1 つの引数があり、プロパティは /sdcard フォルダーへの参照です。これを使用して、sdcard をトラバースし、その中のどこにでも FileReaders と FileWriters を作成できます。root

于 2013-03-18T20:17:54.707 に答える