总有些奇奇怪怪的转换需求~~
上代码~以下是用到的方法
/** * 获取封装得MultipartFile*/ private MultipartFile getMultipartFile(InputStream inputStream, String fileName) { FileItem fileItem = createFileItem(inputStream, fileName); //CommonsMultipartFile是feign对multipartFile的封装,但是要FileItem类对象 return new CommonsMultipartFile(fileItem); } /** * FileItem类对象创建*/ private 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[10 * 1024 * 1024]; 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; }
以下是具体调用端
MultipartFile multipartFile = getMultipartFile(inputStream,"随便一个什么文件名");