软件编程
位置:首页>> 软件编程>> java编程>> java中MultipartFile互转File的方法

java中MultipartFile互转File的方法

作者:巴黎没有欧莱雅你也不值得被拥有  发布时间:2022-12-14 16:52:09 

标签:java,MultipartFile,File
目录
  • MultipartFile转File

  • File转MultipartFile

  •  PS:file转base64字符串

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]", "");

来源:https://blog.csdn.net/lp15203883326/article/details/82879973

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com