2009-07-19 15 views
0

私はGWTで書かれたアプリケーションを持っており、Google AppEngine/Javaでホストされています。このアプリケーションでは、ビデオ/オーディオ/テキストファイルをサーバーにアップロードするオプションがあります。これらのファイルは、GAE/Jが大きなファイルをサポートしていないため、1GB程度まで大きくなる可能性があります。これらのファイルを格納するために別のサーバーを使用する必要があります。これは、ブラウザにクロスドメインセキュリティ機能がない場合、実装が簡単です。それで、私が考えているのは、GAEサーバーを自分のサーバー(Glassfishまたは他のJavaサーバー)と話してファイルにURLを伝えるようにし、可能な場合はアップロードされたファイルの状態(アップロードされた割合)クライアントの画面にステータスを表示します。ここに私がすることを考えている。2つのサーバーを互いに話すようにする

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

答えて

1

実際には、iframeを使用してブラウザのバイパスドメイン間のセキュリティを介して最初のアプローチを試すことができます。これにはいくつかのコンポーネントを使用する準備ができていますが、あなたの問題のためにそれらのうちのどれが使用可能かわかりません。これらのコンポーネントのためにちょうどGoogle ...

0

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

0

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

あなたが急いでいる場合は、しかし、私は次のようなアプローチを示唆している:

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

また、Amazon's S3を使用することができます。これは既にHTML Form supportですべてサポートされています。

関連する問題