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

到此这篇关于java中MultipartFile互转File的方法的文章就介绍到这了,更多相关java MultipartFile互转File内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中将File转化为MultipartFile的操作

    话不多说直接上代码,简单明了 import java.io.File; import java.io.FileInputStream; import org.springframework.web.multipart.MultipartFile; import org.springframework.mock.web.MockMultipartFile; import org.apache.http.entity.ContentType; File pdfFile = new File("D:/

  • Java原生服务器接收上传文件 不使用MultipartFile类

    由于工作中 使用 MultipartFile 与现有的一些上传文件组件冲突 所以使用其他的接收上传文件的方法. 首先我把 MultipartFile 类的配置文件注释掉. <!-- <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaul

  • Java BufferedImage转换为MultipartFile方式

    目录 BufferedImage转换为MultipartFile 方法一 方法二 Java数据转存的中MultipartFile转File 错误背景 通过搜索引擎 找到了以下两种方法 BufferedImage转换为MultipartFile Java里读取图片或调整图片大小可使用BufferedImage进行操作(参考我另一篇文章Java修改图片大小尺寸),但有时候我们需要将BufferedImage转为MultipartFile进行其他操作可如下转换: 方法一 1.新建ConvertToMu

  • java中MultipartFile互转File的方法

    目录 MultipartFile转File File转MultipartFile PS:file转base64字符串 MultipartFile转File 公司业务遇到需要接收前台提交过来的图片或文件(multipart/form-data)类型的(ps:不知道有没有拼错嘻嘻) 后台接收的需要转换为一个File类型的 那么这里涉及到了类型转换的问题: 先列下我的代码: @PostMapping("upload") @ResponseBody public void upload(Htt

  • java中pdf转图片的实现方法

    JAVA中实现pdf转图片可以通过第三方提供的架包,这里介绍几种常用的,可以根据自身需求选择使用. 一.icepdf.有收费版和开源版,几种方法里最推荐的.转换的效果比较好,能识别我手头文件中的中文,就是转换后可能字体的关系部分字间距有点宽.因为,字体支持是要收费的,所以转换的图片会带有官方的水印.去水印的方法可以查看另一篇文章:icepdf去水印方法 1.下载icepdf的架包,并导入项目中,这里用到4个,如下: 2.附上代码例子: String filePath = "c:/test.pdf

  • Java中获取当前路径的几种方法总结

    Java中获取当前路径的几种方法总结 1.利用System.getProperty()函数获取当前路径: System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 2.使用File提供的函数获取当前路径: File directory = new File("");//设定为当前文件夹 try{ System.out.println(directory.getCanonicalPath

  • 浅谈java 中文件的读取File、以及相对路径的问题

    一.对于java项目中文件的读取 1.使用System 或是 系统的Properties对象 ①直接是使用 String relativelyPath=System.getProperty("user.dir"); ②使用Properties对象 我们先来遍历一下系统的属性: Properties properties = System.getProperties(); Enumeration pnames = properties.propertyNames(); while (pn

  • Java中读取文件转换为字符串的方法

    方式一 /** 以字节为单位读取文件,常用于读二进制文件,如图片.声音.影像等文件. 当然也是可以读字符串的. */ /* 貌似是说网络环境中比较复杂,每次传过来的字符是定长的,用这种方式?*/ public String readString1() { try { //FileInputStream 用于读取诸如图像数据之类的原始字节流.要读取字符流,请考虑使用 FileReader. FileInputStream inStream=this.openFileInput(FILE_NAME)

  • java 中链表的定义与使用方法

    java 中链表的定义与使用方法 Java实现链表主要依靠引用传递,引用可以理解为地址,链表的遍历多使用递归,这里我存在一个疑问同一个类的不同对象的的相同方法的方法内调用算不算递归. 这里我写的是单向链表; 实例代码: package com.example.java; public class MyLink { public static void main(String [] args){ Link l=new Link(); mytype[] la; mytype dsome=new my

  • Java中常用修饰符的使用方法汇总

    修饰符汇总: 一:public protected default private 修饰类,修饰方法,修饰属性,修饰代码块. 类: 顶级类只能用public 修饰,顶级类不能使用private 和protected 修饰. 外部类可以被public修饰或者默认不写,不能用private和protected. 内部类可为静态,可用protected和private修饰. 方法: 通常方法可以被四个访问修饰符修饰,构造方法也可以被四个访问修饰符修饰. 抽象类中的抽象方法不能被private修饰,可以

  • Java中四种遍历List的方法总结(推荐)

    实例如下: package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * List遍历 * * @author Dylan */ public class ListLoop { public static void main(String[] args) { // 初始化一个长度为10的ArrayList L

  • java 中Excel转shape file的实例详解

    java  中Excel转shape file的实例详解 概述: 本文讲述如何结合geotools和POI实现Excel到shp的转换,再结合前文shp到geojson数据的转换,即可实现用户上传excel数据并在web端的展示功能. 截图: 原始Excel文件 运行耗时 运行结果 代码: package com.lzugis.geotools; import com.lzugis.CommonMethod; import com.vividsolutions.jts.geom.Coordina

  • javascript实现类似java中getClass()得到对象类名的方法

    本文实例讲述了javascript实现类似java中getClass()得到对象类名的方法.分享给大家供大家参考.具体如下: 在javascript中没有能够返回特定类型名的函数 如一个对象 console.log(obj); 得到的是[object HtmlTableCellElement]如果想要一个函数能够返回HtmlTableCellElement js中默认没有这样的函数 可以自己实现一个 var getObjectClass = function (obj) { if (obj &&a

随机推荐