spring boot 文件上傳與其他屬性一起上傳
DAO定義
需要用到lombok組件自動(dòng)生成setter煌贴、getter方法
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
@Data
public class AgentInfoTest {
private String agentName;
private String agentPhone;
private MultipartFile blFile;
}
controller上傳文件代碼:
@Api(value = "測試文件上傳")
@Slf4j
@RestController
@RequestMapping("api/test")
public class TestController {
@ApiOperation(value = "測試文件與其他屬性一起上傳")
@PostMapping(value="test")
public void test(AgentInfoTest condig) throws Exception{
MultipartFile blFile = condig.getBlFile();
if(!blFile.isEmpty()){
File newFile = new File("D:\\" + blFile.getOriginalFilename());
// 存儲(chǔ)上傳文件
blFile.transferTo(newFile);
}
}
}
注意:這里定義的對(duì)象作為參數(shù)的時(shí)候不能標(biāo)注@RequestBody牙丽,類似如下
public void test(@RequestBody AgentInfoTest condig) throws Exception
如果標(biāo)記會(huì)出現(xiàn)如下異常
系統(tǒng)內(nèi)部異常:Content type 'multipart/form-data;charset=UTF-8;boundary=WebAppBoundary' not supported"
application.yml配置
spring:
# spring boot高版本: 2.X(低版本: 1.X 為spring.http.multipart)
servlet:
multipart:
# 單個(gè)文件上傳的大小限制(默認(rèn)1M)
max-file-size: 2MB
# 請(qǐng)求上傳文件接口總共上傳文件大小的限制
max-request-size: 20M
rest client 測試文件上傳
代碼如下:
###
POST {{baseurl}}/api/test
Accept: application/json
Content-Type: multipart/form-data; charset=UTF-8; boundary=WebAppBoundary
Authentication:{{Authentication}}
--WebAppBoundary
Content-Disposition: form-data; name="agentName"
Content-Type: application/json
張三
--WebAppBoundary
Content-Disposition: form-data; name="agentPhone"
Content-Type: application/json
lisi
--WebAppBoundary
Content-Disposition: form-data; name="blFile"; filename="%E5%BE%80_20201215142015.png"
Content-Type: application/octet-stream; charset=UTF-8
< D:\微信圖片_20201215142015.png
--WebAppBoundary--
其中boundary=WebAppBoundary一定要寫,WebAppBoundary可以自定義。
第一個(gè)--WebAppBoundary不要有參數(shù)信息(既前面是空)镀娶。
結(jié)尾用--WebAppBoundary-- 標(biāo)識(shí)輸入完成。
baseurl 和 Authentication 在配置文件中配置。