7、play中的文件上传
生活随笔
收集整理的這篇文章主要介紹了
7、play中的文件上传
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、基本的文件上傳處理
將form的類型設(shè)置成multipart/form-data,請求的方式必須是POST類型,實(shí)例如下:
請求發(fā)到controller,controller中處理:?
public Result upload() {MultipartFormData<TemporaryFile> body = request().body().asMultipartFormData();MultipartFormData.FilePart<TemporaryFile> picture = body.getFile("picture");// 直接轉(zhuǎn)成File,然后進(jìn)行處理File file = (File)picture.getFile();// 也可以通過下邊的方式進(jìn)行操作if (picture != null) {String fileName = picture.getFilename();long fileSize = picture.getFileSize();String contentType = picture.getContentType();TemporaryFile file = picture.getFlie();file.copy(new File(“路徑”));return ok("File uploaded");}}2、AJAX異步上傳表單文件
在這種情況下,請求主體不會被編碼為multipart/form-data數(shù)據(jù),而是只包含純文件內(nèi)容。此時(shí)可以使用另一種方式進(jìn)行處理:
3、流式文件上傳解析器
Multipart/form-data指定的上載從請求中獲取上載的數(shù)據(jù),并將其放入臨時(shí)文件對象中,可以通過使用multipartformDataBodyParser類將multipart.fileinfo信息流式傳輸?shù)搅硪粋€(gè)類:
此內(nèi)容在multipartformDataBodyParser文件中
4、清理臨時(shí)文件
在conf/application.conf中進(jìn)行配置,應(yīng)用啟動5分鐘后開始檢測并刪除應(yīng)用中的上傳時(shí)間超過了30分鐘的臨時(shí)文件,此任務(wù)每30秒走一次:
play.temporaryFile {reaper {enabled = trueinitialDelay = "5 minutes"interval = "30 seconds"olderThan = "30 minutes"}}這里有一個(gè)疑問,如何限制上傳文件的大小呢?
可以在提交時(shí)進(jìn)行校驗(yàn),也可以通過限制請求體解析器需要用到的緩沖區(qū)大小進(jìn)行控制
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的7、play中的文件上传的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6、XML数据处理
- 下一篇: Arduino重磅更新!IDE 2.0来