0

GWTで記述され、Google AppEngine/Javaでホストされているアプリケーションがあります。このアプリケーションでは、ユーザーはビデオ/オーディオ/テキストファイルをサーバーにアップロードするオプションがあります。これらのファイルは最大1GB程度の大きなファイルになる可能性があり、GAE / Jは大きなファイルをサポートしていないため、これらのファイルを保存するには別のサーバーを使用する必要があります。ブラウザにクロスドメインセキュリティ機能がない場合、これは簡単に実装できます。したがって、私が考えているのは、GAEサーバーがサーバー(必要に応じてGlassfishまたはその他のJavaサーバー)と通信して、ファイルのURLを通知し、可能であればアップロードされたファイルのステータス(アップロードされたパーセント)を送信することです。クライアント画面にステータスを表示します。これが私がやろうと思っていることです。

ユーザーがGAE/Jに保存されているGWTページをロードすると、ユーザーはファイルをサーバーにアップロードし、サーバーは応答をGAEに送り返し、GAEは応答をクライアントに送信します。このシナリオが可能である場合、GAEとGlassfishの会話を実装するための最良の方法は何でしょうか。

4

3 に答える 3

1

実際にはその前に、iframe を使用してブラウザーのクロスドメイン セキュリティをバイパスすることで、最初のアプローチを試すことができます。これにはすぐに使用できるコンポーネントがいくつかありますが、問題に対して、どれを使用できるかわかりません。これらのコンポーネントをグーグルで検索してください...

于 2009-07-20T05:12:56.233 に答える
0

1つのオプションは待つことです-blobstoreの制限は常に50MBになるとは限りません!

ただし、お急ぎの場合は、次のようなアプローチをお勧めします。

  1. App Engineアプリに、ユーザーがファイルをアップロードする権限を持っていることを示す署名付きトークンを生成させます。トークンには、現在の日時、ユーザーのユーザーID、最大ファイルサイズ、およびその他の関連情報が含まれている必要があり、AppEngineアプリとサーバーの両方が認識している秘密鍵を使用してHMAC-SHA1を使用して署名する必要があります。
  2. BLOBホスティングサーバー上のURLにPOSTするフォームをユーザーに返し、手順1で生成したトークンを埋め込みます。進行状況の通知が必要な場合は、pluploadなどのツールを使用して、によって提供されるIFrameでフォームを提供できます。アップロードサーバー。
  3. ユーザーがファイルをサーバーにアップロードすると、サーバーはリダイレクトURLに新しいトークンが埋め込まれた状態でAppEngineアプリにリダイレクトを返す必要があります。そのトークンは、再び共通の秘密で署名されており、新しくアップロードされたファイルのIDが含まれています。
  4. App EngineアプリがリダイレクトURLのリクエストを受信すると、アップロードが完了したことを認識し、新しいファイルのIDなどをデータストアに記録できます。

または、 AmazonのS3を使用することもできます。これは、 HTMLフォームのサポートでこれらすべてをすでにサポートしています。

于 2010-04-26T09:19:17.880 に答える
0

URL Fetch Serviceを使用することを提案した元の方法で それを行う 他の方法で行うことの欠点は、Web ページ内の複数のサイトに依存関係を導入することです。
URL フェッチ サービスを使用することの欠点は、無料のクォータに達した後、転送されたバイト数に応じて料金を支払う必要があることです。

于 2010-04-24T17:14:39.780 に答える