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 キーとしてアプリに渡します。