FlatServe Multipart Request Plugin
0.4

FlatServe Multipart Request Plugin API仕様 バージョン0.4

FlatServe Multipart Requestプラグインは、Content-Typeがmultipart/form-dataであるリクエストの内容を 簡単に読み込むためのプラグインです。

参照先:
          説明

パッケージ
com.small_it_office.flatserve.multipart Multipart Requestプラグインの機能を提供するクラスのAPIパッケージです。

 

FlatServe Multipart Requestプラグインは、Content-Typeがmultipart/form-dataであるリクエストの内容を 簡単に読み込むためのプラグインです。 Webブラウザからアップロードされたファイルを、HTTPサービスメソッドの引数で受け取ることができます。 複雑な読み込み処理を記述する必要はありません。

アップロードされたファイルを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プラグインを使用している場合、 文字列以外の型の引数や、バリデーション機能についてもそのまま利用できます。

JavaBeanのフィールドでファイルを受け取る

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