文件上傳
在一個form中用multipart/form-data上傳文件
在一個web應用程序中,標準的上傳文件是用multipart/form-data編碼的form,它允許用文件附件形式混合表單數據。注意的是對於這樣的form的HTTP方法,必須是POST提交
1、打開routes文件,添加 POST /upload controllers.UserControl.upload()
2、在UserControl.java中,加入
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();
System.out.println("filename:"+filename+",contentType:"+contentType);
return ok("File load");
}else{
flash("error","Miss file");
return redirect(routes.Application.index());
}
}
3、打開form.scala.html,加入
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="picture">
<p>
<input type="submit">
</p>
</form>
直接文件上傳
另一張方式上傳文件是用ajax,從一個form中異步上傳文件。這種情況下,請求的body不會被編碼成Multipart/form-data,只包含純文本文件內容。
public static Result upload() {
File file = request().body().asRaw().asFile();
return ok("File uploaded");
}