Documentation

You are viewing the documentation for the 2.0.8 release in the 2.0.x series of releases. The latest stable release series is 2.4.x.

§ファイルアップロード

§フォームから multipart/form-data 形式でファイルをアップロードする

web アプリケーションにおけるファイルアップロードの標準的な方法は、multipart/form-data エンコーディングのフォームを使うことです。multipart/form-data を使うと、標準的なフォームデータに加えて、ファイルを添付データとして一緒に送信することができます。

まず、 HTML フォームを書きます。

@form(action = routes.Application.upload, 'enctype -> "multipart/form-data") {
    
    <input type="file" name="picture">
    
    <p>
        <input type="submit">
    </p>
    
}

次に、 upload アクションを定義します。

public static Result upload() {
  MultipartFormData body = request().body().asMultipartFormData();
  FilePart picture = body.getFile("picture");
  if (picture != null) {
    String fileName = picture.getFilename();
    String contentType = picture.getContentType(); 
    File file = picture.getFile();
    return ok("File uploaded");
  } else {
    flash("error", "Missing file");
    return redirect(routes.Application.index());    
  }
}

§ダイレクトファイルアップロード

サーバへファイルを送信する別の方法は、Ajax を活用してフォームからファイルを非同期的にアップロードするというものです。この方法では、リクエストボディは multipart/form-data としてエンコードされず、単にファイルの内容を含むだけになります。

public static Result upload() {
  File file = request().body().asRaw().asFile();
  return ok("File uploaded");
}

次ページ: SQL データベースへのアクセス