|
FlatServe Multipart Request Plugin 0.4 |
||||||||
前 次 | フレームあり フレームなし |
参照先:
説明
パッケージ | |
---|---|
com.small_it_office.flatserve.multipart | Multipart Requestプラグインの機能を提供するクラスのAPIパッケージです。 |
FlatServe Multipart Requestプラグインは、Content-Typeがmultipart/form-dataであるリクエストの内容を 簡単に読み込むためのプラグインです。 Webブラウザからアップロードされたファイルを、HTTPサービスメソッドの引数で受け取ることができます。 複雑な読み込み処理を記述する必要はありません。
たとえば、以下のようなHTMLをWebブラウザで表示し、ファイルのアップロードを行うとします。
<form method="POST" action="foo/bar/MyServiceClass/serviceMethod1.fs" enctype="multipart/form-data"> <input type="file" name="myFile" /> <input type="submit" /> </form>
このHTMLによりアップロードされたファイルを受け取るHttpServiceメソッドの例を示します。
以下に示すように、アップロードされたファイルは、byte[]型またはFileItem
型の引数で
受け取ることができます。引数には、
FileParam
アノテーションを付与します。
//FileItem型の例 @HttpService public Response serviceMethod1(@FileParam("myFile") FileItem uploadedFile) { String contentType = uploadedFile.getContentType(); String fileName = uploadedFile.getFileName(); byte[] fileContent = uploadedFile.getFile(); ... }
この例では、myFileという名前のボディパートで送信されたファイルの内容を、FileItem型の引数で受け取ります。 FileItem型のオブジェクトには、ボディパートのContent-Type、アップロードされたファイル名、およびファイルの内容が 含まれます。引数をFileItem型ではなくbyte[]型とした場合は、ファイルの内容だけが引数に渡されます。
//byte[]型の例 @HttpService public Response serviceMethod1(@FileParam("myFile") byte[] uploadedFile) { ... }
引数の型は、FileItemまたはbyte[]の配列(FileItem[]およびbyte[][])とすることもできます。 同じ名前のボディパートが複数存在する場合に、配列型で受け取ることができます。
@HttpService public Response serviceMethod3(@FileParam("myFiles") FileItem[] uploadedFiles) { ... }
Webブラウザからフォームフィールドの値をマルチパートリクエストで送信された場合でも、マルチパートであることを 意識することなく、通常のHTTPサービスメソッドの引数として受け取ることができます。もちろん、 ファイルのアップロードと同時にフォームフィールドの値を受け取ることもできます。
@HttpService public Response serviceMethod4(@Pram("myFormData") String formData, @FileParam("myFile") FileItem uploadedFile) { ...
他のプラグインによるHTTPサービスメソッドの引数へのマッピングについても、マルチパートであることを意識することなく 行うことができます。たとえば、Validatorプラグインを使用している場合、 文字列以外の型の引数や、バリデーション機能についてもそのまま利用できます。
HTTPサービスメソッドの引数を独自クラス(JavaBean)として、そのクラスにファイルを格納するフィールドを定義することもできます。
この場合も、フィールドの型はbyte[]、FileItem、あるいはそれらの配列とします。
フィールド定義には、引数の場合と同様にFileParam
アノテーションが必要ですが、
FileItemまたはFileItem[]型の場合はアノテーションは省略できます。その場合、フィールド名をボディパート名として解釈します。
//Beanの定義 public class MyBean { @FileParam("myFile") private FileItem uploadedFile public FileItem getUploadedFile() { return uploadedFile; } ... } //HTTPサービスメソッド @HttpService public Response serviceMethod5(MyBean bean) { FileItem uploadedFile = bean.getUploadedFile(); ... }
ログ出力メッセージおよび例外メッセージのリソースバンドル名は、flatserve-multipartrequest-messagesです。 JARファイル内にはflatserve-vlidator-messages_ja.propertiesファイルが含まれているため、 日本語のメッセージはそのまま利用可能です。 その他の言語で記述されたメッセージのリソースバンドルファイルを、クラスパスが通った ディレクトリに配置することで国際化・地域化できます。 たとえば、メッセージを英語化する場合は、flatserve-multipartrequest-messages_en.propertiesをクラスパス上に配置します。 実行時のロケールは、FlatServeコアモジュールの設定オブジェクトによって指定できます。 指定しない場合は、実行環境のデフォルトロケールが適用されます。
|
FlatServe Multipart Request Plugin 0.4 |
||||||||
前 次 | フレームあり フレームなし |