Java客戶端服務端上傳接收檔案實現詳解
阿新 • • 發佈:2020-07-08
Java客戶端通過HTTP協議上傳檔案,服務端處理客戶端請求,MultipartFile轉File,實現客戶端上傳檔案的儲存
Java環境: JDK1.8
開發環境: IDEA
SpringBoot: 2.2.0
Maven: 3.6.3
Java客戶端通過HTTP協議上傳檔案
// 引入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<>(); //檔案上傳只需將引數中的鍵指定(預設file),值設為檔案物件即可,對於使用者來說,檔案上傳與普通表單提交併無區別 paramMap.put("file",FileUtil.file("C:\\檔案路徑\\檔名稱")); String result = HttpUtil.post("服務端IP:埠",paramMap);
Java服務端接收請求並實現檔案的儲存
工具類
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的資料緩衝 byte[] bs = new byte[1024]; // 讀取到的資料長度 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,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
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。