#處理文件上傳
1.在表單中用multipart/form-data上傳文件。
在web應用中標準的文件上傳方式是在表單中使用一個特殊的"multipart/form-data編碼,它允許標準表單數據和文件附件混合使用:
例如:
@form(action = routes.Application.upload, 'enctype -> "multipart/form-data") {
<input type="file" name="picture">
<p>
<input type="submit">
</p>
}
現在我們定義一個上傳Action:
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();
return ok("File uploaded");
} else {
flash("error", "Missing file");
return redirect(routes.Application.index());
}
}
2.直接上傳文件
另一種把文件發送懂服務器的方法是使用Ajax從表單異步上傳文件。這種情況下,請求體不會被以"multipart/form-data"編碼,而僅僅包含普通文件內容。
public static Result upload() {
File file = request().body().asRaw().asFile();
return ok("File uploaded");
}