LoginSignup
15
11

More than 5 years have passed since last update.

Playでファイルアップローダー機能を実装する

Posted at

playフレームワークを使ってアップローダーを作成する。
前提としてplayの空プロジェクトができているものとする。

ルーティングの設定

routesに次の3行を追加する。

# for Uploader
GET     /up             controllers.Uploader.index
POST    /upload         controllers.Uploader.upload

ビューの作成

アップローダーを行う画面を作成する。

app/view/up.scala.html
@(message: String)

@main("Welcome to Play") {

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

}

コントローラーの作成

アップロード用のロジックを作成する。

app/controllers/Uploader.scala
package controllers

import play.api._
import play.api.mvc._

object Uploader extends Controller {

  def index = Action {
    Ok(views.html.up("アップロード成功"))
  }

  def upload = Action(parse.multipartFormData) { request =>
    request.body.file("file").map { file =>
      import java.io.File
      val filename = file.filename
      val contentType = file.contentType
      file.ref.moveTo(new File("/tmp", filename))
    Ok(views.html.up("アップロード成功"))
    }.getOrElse {
      Redirect(routes.Uploader.index).flashing(
        "error" -> "Missing file"
      )
    }
  }

}

これで次のURLにアクセスすればアップロードを行える。
http://ホスト名:9000/up

15
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
11