原文:https://blog.csdn.net/niugang0920/article/details/109337641
//調用放 MultipartFile multipartFile = getMultipartFile(inputStream, originalFilename); /** * 獲取封裝得MultipartFile * * @param inputStream inputStream * @param fileName fileName * @return MultipartFile */ public MultipartFile getMultipartFile(InputStream inputStream, String fileName) { FileItem fileItem = createFileItem(inputStream, fileName); //CommonsMultipartFile是feign對multipartFile的封裝,但是要FileItem類對象 return new CommonsMultipartFile(fileItem); } /** * FileItem類對象創建 * * @param inputStream inputStream * @param fileName fileName * @return FileItem */ public FileItem createFileItem(InputStream inputStream, String fileName) { FileItemFactory factory = new DiskFileItemFactory(16, null); String textFieldName = "file"; FileItem item = factory.createItem(textFieldName, MediaType.MULTIPART_FORM_DATA_VALUE, true, fileName); int bytesRead = 0; byte[] buffer = new byte[8192]; OutputStream os = null; //使用輸出流輸出輸入流的字節 try { os = item.getOutputStream(); while ((bytesRead = inputStream.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } inputStream.close(); } catch (IOException e) { log.error("Stream copy exception", e); throw new IllegalArgumentException("文件上傳失敗"); } finally { if (os != null) { try { os.close(); } catch (IOException e) { log.error("Stream close exception", e); } } if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { log.error("Stream close exception", e); } } } return item; }