javascript
springboot util 测试类怎么写_SpringBoot入门建站全系列(九)文件上传功能与下载方式...
SpringBoot入門建站全系列(九)文件上傳功能與下載方式
Spring對文件上傳做了簡單的封裝,就是用MultipartFile這個對象去接收文件,當(dāng)然有很多種寫法,下面會一一介紹。
文件的下載很簡單,給一個鏈接就行,而這個鏈接怎么生成,也有很多方式,下面也會講解下常用的方式。
項(xiàng)目地址: 品茗IT-同步發(fā)布
品茗IT 提供在線支持:
一鍵快速構(gòu)建Spring項(xiàng)目工具
一鍵快速構(gòu)建SpringBoot項(xiàng)目工具
一鍵快速構(gòu)建SpringCloud項(xiàng)目工具
一站式Springboot項(xiàng)目生成
Mysql一鍵生成Mybatis注解Mapper
如果大家正在尋找一個java的學(xué)習(xí)環(huán)境,或者在開發(fā)中遇到困難,可以加入我們的java學(xué)習(xí)圈,點(diǎn)擊即可加入,共同學(xué)習(xí),節(jié)約學(xué)習(xí)時間,減少很多在學(xué)習(xí)中遇到的難題。
一、配置
本文假設(shè)你已經(jīng)引入spring-boot-starter-web。已經(jīng)是個SpringBoot項(xiàng)目了,如果不會搭建,可以打開這篇文章看一看《SpringBoot入門建站全系列(一)項(xiàng)目建立》。因?yàn)槲募蟼骱拖螺d不需要引入額外的jar包了。但是需要做如下配置:
application.properties 中需要添加下面的配置:
spring.servlet.multipart.enabled=true spring.servlet.multipart.max-file-size=20MB spring.servlet.multipart.max-request-size=50MB這里,
- spring.servlet.multipart.max-file-size是對單個文件大小的限制。
- spring.servlet.multipart.max-request-size是對單次請求的大小進(jìn)行限制
至此,已經(jīng)可以正常的進(jìn)行上傳下載了,就剩下寫代碼了。
二、文件上傳的幾種方式
2.1 單個文件上傳
在Controller的RequestMapping注解的方法參數(shù)中,直接將MultipartFile作為參數(shù)傳遞進(jìn)來。
package測試的時候,使用postman可以這樣傳參:
2.2 多個文件上傳
在Controller的RequestMapping注解的方法參數(shù)中,直接將MultipartFile作為list傳遞進(jìn)來。在FileRest中增加uploadList方法。
package測試的時候,使用postman可以這樣傳參:
2.3 從HttpServletRequest中取文件
新建uploadByRequest方法,將HttpServletRequest作為參數(shù),Spring自動傳入。
Spring對Request做了一層封裝,如果有文件,它就是MultipartHttpServletRequest。 然后我們可以從MultipartHttpServletRequest獲取到MultipartFile。后面的處理方式一樣了。
package測試的時候,傳參方式使用上面兩種都可以了。
三、文件下載方式
文件上傳成功后,我們同時會提供下載功能。下載功能很簡單,有以下幾種方式:
3.1 Spring配置映射
新建一個WebStaticConfig配置類,實(shí)現(xiàn)WebMvcConfigurer接口即可:
import這句話將當(dāng)前服務(wù)器(比如是http://127.0.0.1:8080)的/static路徑(http://127.0.0.1:8080/static/)下的資源,映射到uploadStaticLocal指定的本地路徑下的文件。
然后我們就可以直接訪問文件了。
3.2 代理(nginx)映射
代理首選nginx了。高性能快捷的代理轉(zhuǎn)發(fā)工具。
比如要將http://127.0.0.1:8081/static/下的資源,映射到/static/指定的本地路徑下的文件,可以這樣配置:
server {listen 8081;server_name localhost;location /static {alias /static/;index index.html;} }這里為什么用8081而不是上面的8080了呢?因?yàn)樯厦娴?080端口已經(jīng)被SpringBoot應(yīng)用占用了。nginx要在另一個端口監(jiān)聽了,如果非要將SpringBoot應(yīng)用和靜態(tài)資源在一個端口,可以對SpringBoot應(yīng)用也做代理,例如:
server {listen 8081;server_name localhost;location ^~ /api/ {proxy_pass http://127.0.0.1:8080/;}location /static {alias /static/;index index.html;} }3.3 ResponseEntity讀取文件并返回
比如我們在FileRest的Controller中建立個downloadFile方法,傳入文件名,將文件讀取為byte,包裝成ResponseEntity返回。
@RequestMapping四、過程中用到的實(shí)體及Service
詳細(xì)完整的實(shí)體及Service,可以訪問品茗IT-博客《SpringBoot入門建站全系列(九)文件上傳功能與下載方式》
快速構(gòu)建項(xiàng)目
Spring組件化構(gòu)建
喜歡這篇文章么,喜歡就加入我們一起討論SpringBoot技術(shù)吧!
總結(jié)
以上是生活随笔為你收集整理的springboot util 测试类怎么写_SpringBoot入门建站全系列(九)文件上传功能与下载方式...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尼康称计划全面进军视频市场 全画幅Z f
- 下一篇: 男子陵园祭祖车雷达显示全是人 网友:啥车