Java客戶端服務端上傳接收文件實現(xiàn)詳解
Java客戶端通過HTTP協(xié)議上傳文件, 服務端處理客戶端請求, 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相關文檔, 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ù)中的鍵指定(默認file),值設為文件對象即可,對于使用者來說,文件上傳與普通表單提交并無區(qū)別 paramMap.put("file", FileUtil.file("C:\\文件路徑\\文件名稱")); String result = HttpUtil.post("服務端IP:端口", paramMap);
Java服務端接收請求并實現(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 { // 完畢,關閉所有鏈接 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 服務端報上傳文件錯誤“spring.servlet.multipart.max-file-size”
可以修改配置文件: application.properties, 添加以下配置..大小自行修改...
spring.servlet.multipart.max-file-size=200MB
spring.servlet.multipart.max-request-size=200MB
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
springboot 中 inputStream 神秘消失之謎(終破)
這篇文章主要介紹了springboot 中 inputStream 神秘消失之謎,為了能夠把這個問題說明,我們首先需要從簡單的http調(diào)用說起,通過設置body等一些操作,具體實現(xiàn)代碼跟隨小編一起看看吧2021-08-08Java學習基礎之安裝JDK/配置JDK環(huán)境&IEDA工具安裝
這篇文章主要介紹了Java學習基礎系列文章的第一篇,主要內(nèi)容是安裝JDK/配置JDK環(huán)境&IEDA工具安裝的相關資料,需要的朋友可以參考下2020-02-02Java讀取Excel、docx、pdf和txt等文件萬能方法舉例
在Java開發(fā)中處理文件是常見需求,本文以實際代碼示例詳述如何使用ApachePOI庫及其他工具讀取和寫入Excel、Word、PDF等文件,介紹了ApachePOI、ApachePDFBox和EasyExcel等庫的使用方法,幫助開發(fā)者有效讀取不同格式文件,需要的朋友可以參考下2024-09-09ZooKeeper入門教程二在單機和集群環(huán)境下的安裝搭建及使用
本文是ZooKeeper入門系列教程,涵蓋ZooKeeper的安裝使及單機集群環(huán)境搭建,通過實例和大量圖表,結(jié)合實戰(zhàn),幫助學習者理解和運用,有需要的朋友可以借鑒參考下2022-01-01你所不知道的Spring的@Autowired實現(xiàn)細節(jié)分析
這篇文章主要介紹了你所不知道的Spring的@Autowired實現(xiàn)細節(jié)分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08Java中的異常處理(try,catch,finally,throw,throws)
本文主要介紹了Java中的異常處理,文章主要介紹的異常處理包括5個關鍵字try,catch,finally,throw,throws,更多詳細內(nèi)容需要的朋友可以參考一下2022-06-06