Java不导入依赖将InputStream转为MultipartFile

604 阅读1分钟

最近写代码需要将输入流转成MultipartFile,我们都知道MultipartFile转输入流是很好转的,但输入流并不能直接转为MultipartFile,我就自己在网上找了一个相对简单的方法。

上代码

/**  
* 获取封装得MultipartFile  
*  
* @param inputStream inputStream  
* @param fileName fileName  
* @return MultipartFile  
*/  
public static 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 static 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;  
}

来自