7、play中的文件上传
1、基本的文件上傳處理
將form的類(lèi)型設(shè)置成multipart/form-data,請(qǐng)求的方式必須是POST類(lèi)型,實(shí)例如下:
請(qǐng)求發(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();// 也可以通過(guò)下邊的方式進(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異步上傳表單文件
在這種情況下,請(qǐng)求主體不會(huì)被編碼為multipart/form-data數(shù)據(jù),而是只包含純文件內(nèi)容。此時(shí)可以使用另一種方式進(jìn)行處理:
3、流式文件上傳解析器
Multipart/form-data指定的上載從請(qǐng)求中獲取上載的數(shù)據(jù),并將其放入臨時(shí)文件對(duì)象中,可以通過(guò)使用multipartformDataBodyParser類(lèi)將multipart.fileinfo信息流式傳輸?shù)搅硪粋€(gè)類(lèi):
此內(nèi)容在multipartformDataBodyParser文件中
4、清理臨時(shí)文件
在conf/application.conf中進(jìn)行配置,應(yīng)用啟動(dòng)5分鐘后開(kāi)始檢測(cè)并刪除應(yīng)用中的上傳時(shí)間超過(guò)了30分鐘的臨時(shí)文件,此任務(wù)每30秒走一次:
play.temporaryFile {reaper {enabled = trueinitialDelay = "5 minutes"interval = "30 seconds"olderThan = "30 minutes"}}這里有一個(gè)疑問(wèn),如何限制上傳文件的大小呢?
可以在提交時(shí)進(jìn)行校驗(yàn),也可以通過(guò)限制請(qǐng)求體解析器需要用到的緩沖區(qū)大小進(jìn)行控制
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的7、play中的文件上传的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 6、XML数据处理
- 下一篇: 8、play框架中持久层操作