
Spring MultipartFile转成java.io.Inputstream 文件与输入流互转
发布日期:2021-05-08 03:35:03
浏览次数:15
分类:精选文章
本文共 2903 字,大约阅读时间需要 9 分钟。
第一种方式
把读到的MultipartFile转存到本地的临时文件,然后再从本地读取这个转存的这个临时文件,从中获取文件流
// 首先MultipartFile sourceFile;// 处理方式InputStream inputStream = null;File file = null;file = File.createTempFile("temp", null);sourceFile.transferTo(file); //sourceFile为传入的MultipartFileinputStream = new FileInputStream(file);file.deleteOnExit();
第二种方式
import org.springframework.web.multipart.MultipartFile;import org.springframework.web.multipart.commons.CommonsMultipartFile;import org.apache.commons.fileupload.disk.DiskFileItem; CommonsMultipartFile cFile = (CommonsMultipartFile) mFile;DiskFileItem fileItem = (DiskFileItem) cFile.getFileItem();InputStream inputStream = fileItem.getInputStream();// 示例代码
其他
/*** InputStream转byte[]*/public static byte[] getFile(final InputStream inputStream ){ //这个是重点 ByteArrayOutputStream resultByte = new ByteArrayOutputStream(); byte[] read_buf = new byte[64 * 1024]; int read_len = 0; while ((read_len = inputStream.read(read_buf)) > 0) { resultByte.write(read_buf, 0, read_len); } return resultByte.toByteArray();}
/*** MultipartFile 转 File*/public static File multipartFileToFile(MultipartFile multipartFile){ // 获取文件名 String fileName = multipartFile.getOriginalFilename(); // 获取文件后缀 String prefix=fileName.substring(fileName.lastIndexOf(".")); File excelFile = null; try { // 用时间作为文件名,防止生成的临时文件重复 excelFile = File.createTempFile(UUID.randomUUID().toString(), prefix); multipartFile.transferTo(excelFile); }catch (Exception e){ log.error("==========={}文件=================转换异常", fileName); e.printStackTrace(); } return excelFile;}
/*** File 转 MultipartFile* @param file* @throws Exception*/public static void fileToMultipartFile( File file ) throws Exception { FileInputStream fileInput = new FileInputStream(file); MultipartFile toMultipartFile = new MockMultipartFile("file",file.getName(),"text/plain", IOUtils.toByteArray(fileInput)); toMultipartFile.getInputStream();}
/*** MultipartFile 转 File* @param file* @throws Exception*/public static void multipartFileToFile( @RequestParam MultipartFile file ) throws Exception { File toFile = null; if(file.equals("")||file.getSize()<=0){ file = null; }else { InputStream ins = null; ins = file.getInputStream(); toFile = new File(file.getOriginalFilename()); inputStreamToFile(ins, toFile); ins.close(); }}
/*** InputStream 转 File* @param ins* @param file*/public static void inputStreamToFile(InputStream ins, File file) { try { OutputStream os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { os.write(buffer, 0, bytesRead); } os.close(); ins.close(); } catch (Exception e) { e.printStackTrace(); }}
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月26日 10时55分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
码云 Pages 搭建
2021-05-09
《论可计算数及其在判定上的应用》简单理解
2021-05-09
中国剩余定理证明过程
2021-05-09
kafka告警简单方案
2021-05-09
java接口中多继承的问题
2021-05-09
java中Object.equals()简单用法
2021-05-09
一个小例子对多态简单的理解
2021-05-09
poj 2187 Beauty Contest(凸包求解多节点的之间的最大距离)
2021-05-09
poj 2492A Bug's Life(并查集)
2021-05-09
ZZUOJ 1199 大小关系(拓扑排序,两种方法_判断入度和dfs回路判断)
2021-05-09
java中自动装箱的问题
2021-05-09
zyUpload+struct2完成文件上传
2021-05-09
knockout+echarts实现图表展示
2021-05-09
js冲刺一下
2021-05-09
程序员的开发文档
2021-05-09
mybatis generator修改默认生成的sql模板
2021-05-09
Spring根据包名获取包路径下的所有类
2021-05-09
cglib动态代理导致注解丢失问题及如何修改注解允许被继承
2021-05-09