1. 程式人生 > 程式設計 >Java客戶端服務端上傳接收檔案實現詳解

Java客戶端服務端上傳接收檔案實現詳解

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。