2012-09-06 6 views
5

を再生します。私の要件は、複数のファイルを選択してそれらのファイルをアップロードできるブラウズボタンを提供することです。コントローラーでScalaは私がプレイに新しいですし、Scalaの2.0.2複数のファイルのアップロード

<input type="file" name="files" multiple="multiple" id="files" size="30"> 

scala.htmlファイルに:ここで私が書いたコードがある

def upload = Action(parse.multipartFormData) { request => 
    request.body.file("files").map { picture => 
    import java.io.File 
    val filename = picture.filename 
    val contentType = picture.contentType 
    picture.ref.moveTo(new File("/tmp/picture")) 
    Ok("File uploaded") 
    }.getOrElse { 
    Redirect(routes.Application.index).flashing(
     "error" -> "Missing file" 
    ) 
    } 
} 

しかし、私は複数のファイルをアップロードすることはできませんよ。どのようなアイデアがここにあるのですか?

+1

複数のファイルをアップロードするときに実際に何が起こる彼らは黙って無視されますか?エラーメッセージが表示されますか? – Jean

+0

は、誰がどのように得るために私を伝えることができますか?私は汲み上げられた画像サイズを意味します。 – Vicky

答えて

3

あなたは

="multiple" 

これはあなたのフォームを定義する属性に

enctype="multipart/form-data" 
を持っていなければならない場合、複数のファイルをロードするには、等価

<input type="file" name="files" multiple id="files" size="30"> 


の作品を必要としないすべての最初に例えば

、ヘルパーを使用している場合

@helper.form(action = routes.MyController.submit(), 'enctype -> "multipart/form-data", 'id -> "myform") 

か、あなたのコントローラで

<form action=... enctype="multipart/form-data" id="myform"> 

いないのであれば、あなたがこのような何かを試してみたい(Java用、私はスカラ座での同様の確信している)

//Get all files bound to the form when submitted 
List<FilePart> plate_files = request().body().asMultipartFormData().getFiles(); 
//Get files from a specific name or id 
FilePart myfile = request().body().asMultipartFormData().getFile("files"); 

FilePartはScalaの

012でうまくいけば、その類似し

オブジェクトを通じて、あなたはこれらの反復を使用することができますあなたが好きな場合は、同様にこのようにしてみてくださいの

乾杯

+0

どうもありがとう、とても便利 – Ducaz035

1

:?

def uploadFiles: Action[AnyContent] { request => 
    val files: Option[Seq[FilePart[TemporaryFile]]] = request.body.asMultipartFormData.map(_.files) 
    val filesJavaIO: Option[Seq[File]] = files map { fileSeq => fileSeq map { file => 
    file.ref.moveTo(new File("/tmp/myFiles")) 
    } 
    } 
Ok("File uploaded") 

} 
+0

request.body.filesマップ{ファイル=> file.ref.moveTo(新しいファイル( "/ tmpに/ myfilesという/" + file.filename))} – robor78

関連する問題