2

HTMLフォームからPOSTを実行するのと同じ効果を達成するマルチパートPOSTライブラリはありますか? たとえば、Java でプログラミングしてファイルをアップロードするのではなく、html フォームを使用してファイルをアップロードします。サーバー側では、クライアント側からのリクエストがマルチパート POST リクエストであると盲目的に期待し、必要に応じてデータを解析します。

誰もこれを試しましたか?

具体的には、Javaで次のことをシミュレートできるかどうかを確認しようとしています

ユーザーは、1 つ以上のファイル入力フィールドを含む HTML フォームを送信することにより、ブロブを作成します。アプリでblobstoreService.createUploadUrl()を設定しますこのフォームの宛先 (アクション) として、アプリ内のハンドラーの URL パスを関数に渡します。ユーザーがフォームを送信すると、ユーザーのブラウザは指定されたファイルを Blobstore に直接アップロードします。Blobstore は、ユーザーのリクエストを書き換えて、アップロードされたファイル データを保存し、アップロードされたファイル データを 1 つ以上の対応する BLOB キーに置き換えてから、書き換えられたリクエストを blobstoreService.createUploadUrl() に指定した URL パスのハンドラーに渡します。このハンドラーは、blob キーに基づいて追加の処理を行うことができます。最後に、ハンドラーはヘッダーのみのリダイレクト応答 (301、302、または 303) を返す必要があります。通常は、BLOB アップロードのステータスを示す別のページへのブラウザー リダイレクトです。

blobstoreService.createUploadUrlをフォーム アクションとして設定し、フォームの POST が完了したときにロードするアプリケーション パスを渡します。

<body>
    <form action="<%= blobstoreService.createUploadUrl("/upload") %>" method="post" enctype="multipart/form-data">
        <input type="file" name="myFile">
        <input type="submit" value="Submit">
    </form>
</body>

これは、アップロード フォームが JSP として作成された場合の外観であることに注意してください。フォームにはファイル アップロード フィールドを含める必要があり、フォームの enctype は multipart/form-data に設定する必要があります。ユーザーがフォームを送信すると、Blobstore API によって POST が処理され、ブロブが作成されます。また、API は BLOB の情報レコードを作成し、そのレコードをデータストアに保存し、書き換えられたリクエストを指定されたパスで BLOB キーとしてアプリに渡します。

4

2 に答える 2

0

完全で事実上の標準の HTTP 実装 (Android プラットフォームなどに含まれる) は、Apache httpcomponentにあります。

于 2011-01-06T09:36:40.080 に答える
0

ライブラリは必要ありません。これは、ストック Java クラス ( example ) で可能です。

サーバー側では、HTTP 要求パラメーターの解析を非常に簡単にする Java サーブレット ソリューションを実装します。

于 2011-01-06T09:16:21.830 に答える