Java客戶端服務(wù)端上傳接收文件實現(xiàn)詳解
Java客戶端通過HTTP協(xié)議上傳文件, 服務(wù)端處理客戶端請求, MultipartFile轉(zhuǎn)File, 實現(xiàn)客戶端上傳文件的存儲
Java環(huán)境: JDK1.8
開發(fā)環(huán)境: IDEA
SpringBoot: 2.2.0
Maven: 3.6.3
Java客戶端通過HTTP協(xié)議上傳文件
// 引入pom依賴, hutool相關(guān)文檔, https://www.hutool.cn/docs/ <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.7</version> </dependency>
HashMap<String, Object> paramMap = new HashMap<>();
//文件上傳只需將參數(shù)中的鍵指定(默認(rèn)file),值設(shè)為文件對象即可,對于使用者來說,文件上傳與普通表單提交并無區(qū)別
paramMap.put("file", FileUtil.file("C:\\文件路徑\\文件名稱"));
String result = HttpUtil.post("服務(wù)端IP:端口", paramMap);
Java服務(wù)端接收請求并實現(xiàn)文件的存儲
工具類
public class Utils {
public static void saveFile( MultipartFile filecontent){
OutputStream os = null;
InputStream inputStream = null;
String fileName = null;
try {
inputStream = filecontent.getInputStream();
fileName = filecontent.getOriginalFilename();
} catch (IOException e) {
e.printStackTrace();
}
try {
String path = "C:\\test\\";
// 2、保存到臨時文件
// 1K的數(shù)據(jù)緩沖
byte[] bs = new byte[1024];
// 讀取到的數(shù)據(jù)長度
int len;
// 輸出的文件流保存到本地文件
File tempFile = new File(path);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
os = new FileOutputStream(tempFile.getPath() + File.separator + fileName);
// 開始讀取
while ((len = inputStream.read(bs)) != -1) {
os.write(bs, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
// 完畢,關(guān)閉所有鏈接
try {
os.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Controller類
@Controller
public class FileController {
@RequestMapping("/")
@ResponseBody
public String index(@RequestParam(value = "file", required = false) MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
Utils.saveFile(file);
return "Success";
}
}
注意:
文件較大時spring-boot 服務(wù)端報上傳文件錯誤“spring.servlet.multipart.max-file-size”
可以修改配置文件: application.properties, 添加以下配置..大小自行修改...
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=200MB
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaWeb實現(xiàn)學(xué)生信息管理系統(tǒng)(2)
這篇文章主要介紹了JavaWeb實現(xiàn)學(xué)生信息管理系統(tǒng)的第二篇,實現(xiàn)學(xué)生管理系統(tǒng)的查找和添加功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
SpringBoot?@DS注解實現(xiàn)多數(shù)據(jù)源配置以及問題解決辦法
這篇文章主要給大家介紹了關(guān)于SpringBoot?@DS注解實現(xiàn)多數(shù)據(jù)源配置以及問題解決辦法,所謂多數(shù)據(jù)源就是一個Java EE項目中采用了不同數(shù)據(jù)庫實例中的多個庫,或者是同一個數(shù)據(jù)庫實例中的多個不同庫,需要的朋友可以參考下2023-11-11
Java如何使用elasticsearch進(jìn)行模糊查詢
這篇文章主要介紹了Java如何使用elasticsearch進(jìn)行模糊查詢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02
詳解java之redis篇(spring-data-redis整合)
本篇文章主要介紹了java之redis篇,主要詳細(xì)的介紹了spring-data-redis整合,有興趣的可以了解一下。2017-01-01
基于SpringBoot實現(xiàn)自動裝配返回屬性的設(shè)計思路
這篇文章主要介紹了基于SpringBoot實現(xiàn)自動裝配返回屬性,這里涉及到的技術(shù)知識點有注解解析器,為什么用ResponseBodyAdvice這里解析?不在Filter,Interceptors,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2022-03-03
解決Springboot @WebFilter攔截器未生效問題
這篇文章主要介紹了解決Springboot @WebFilter攔截器未生效問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

