2016-11-08 74 views
0

我正在按照以下文檔https://www.playframework.com/documentation/2.5.x/ScalaFileUpload處理文件上傳的形式。 我的代碼是在這裏:Play Framework 2.5.9 Scala處理多部分/表單數據文件字段allways一些

def add(method: String) = Action(parse.multipartFormData) { implicit request => 
    if (method == "GET") { 
     Ok(views.html.add(uploadForm)) 
    } else { 
     uploadForm.bindFromRequest().fold(
     hasErrors => BadRequest(views.html.add(hasErrors)), 
     form => { 
      Logger.debug(request.body.file("myfilefield").toString) 
      Ok(views.html.add(uploadForm)) 
     } 
    ) 
    } 
    } 

每當我提出這種形式,即使我沒有選擇在我得到這樣的控制檯文件中的字段文件:

[調試]應用 - 一些(FilePart(myfilefield ,,一些(應用/八位字節流),TemporaryFile(在/ var /文件夾/ N3/8nrp7hw94bqbsjbcz00n5hk40000gn/T/playtemp4371116121043398878/multipartBody1548294152084205009asTemporaryFile)))

我可以不明白爲什麼這樣。如果我在提交表單之前沒有選擇文件,我認爲request.body.file("myfilefield")中應該有None。 如何找到文件是否被提交?

好的。現在我只是從文件複製的代碼,並得到了相同的結果:( 這裏是我的控制器操作:

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

,這裏是我的看法:

@()

@helper.form(action = routes.HomeController.upload, 'enctype -> "multipart/form-data") { 

    <input type="file" name="picture"> 

    <p> 
     <input type="submit"> 
    </p> 

} 

每當我提交此表格時,我都會收到「文件上傳」消息。

回答

相關問題