java MultipartFile互转File java中MultipartFile互转File的方法
巴黎没有欧莱雅你也不值得被拥有 人气:0想了解java中MultipartFile互转File的方法的相关内容吗,巴黎没有欧莱雅你也不值得被拥有在本文为您仔细讲解java MultipartFile互转File的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java,MultipartFile转File,java,转FileMultipartFile,下面大家一起来学习吧。
MultipartFile转File
公司业务遇到需要接收前台提交过来的图片或文件(multipart/form-data)类型的(ps:不知道有没有拼错嘻嘻)
后台接收的需要转换为一个File类型的
那么这里涉及到了类型转换的问题:
先列下我的代码:
@PostMapping("upload") @ResponseBody public void upload(HttpServletResponse response,MultipartFile file)throws IOException{ //MultipartFile file = ((MultipartHttpServletRequest) request).getFile("file"); PrintWriter writer = response.getWriter(); File f = null; if(file.equals("")||file.getSize()<=0){ file = null; }else{ InputStream ins = file.getInputStream(); f=new File(file.getOriginalFilename()); FileUtil.inputStreamToFile(ins, f); } JSONObject jsonObject= weChatMaterialService.getMediaId("image",f); writer.print(jsonObject); writer.flush(); writer.close(); File del = new File(f.toURI()); del.delete(); System.out.println(jsonObject); }
现在来剖析下:就是判断下我接收的文件是不是空的,如果不是空的就将它转换成为流的形式
后面那个FileUtil就是将流转换成File,最后一步就是因为这样做法会在项目的根目录下(好像是根目录,我也不确定,也是现学现用的嘻嘻)生成一个 文件,这个是我们不需要的对嘛,然后将其删除就行啦
File f = null; if(file.equals("")||file.getSize()<=0){ file = null; }else{ InputStream ins = file.getInputStream(); f=new File(file.getOriginalFilename()); FileUtil.inputStreamToFile(ins, f); } public class FileUtil { 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(); } } } File del = new File(f.toURI()); del.delete();
File转MultipartFile
添加依赖
<!-- https://mvnrepository.com/artifact/org.springframework/spring-mock --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-mock</artifactId> <version>2.0.8</version> </dependency>
代码
/** * @param * @return * @author:liuyu * @创建日期:2020年3月5日 * @功能说明:File转MultipartFile */ private static MultipartFile fileToMultipartFile(File file) throws Exception { InputStream inputStream = new FileInputStream(file); MultipartFile multipartFile = new MockMultipartFile(file.getName(), inputStream); return multipartFile; }
PS:file转base64字符串
① java之文件转为base64字符
FileInputStream inputFile = new FileInputStream(f); String base 64=null; byte[] buffer = new byte[(int) f.length()]; inputFile.read(buffer); inputFile.close(); base64=new BASE64Encoder().encode(buffer);
②注意:java中在使用BASE64Enconder().encode(buffer)会出现字符串换行问题,这是因为RFC 822中规定,每72个字符中加一个换行符号,这样会造成在使用base64字符串时出现问题,所以我们在使用时要先解决换行的问题
String encoded = base64.replaceAll("[\\s*\t\n\r]", "");
加载全部内容