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();    }}
上一篇:修改MYSQL8.0密码不满足当前策略要求解决方法
下一篇:阿里云Maven仓库

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年03月26日 10时55分08秒