檔案上傳
在一個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");}