文件上传
在一个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");
}