java MultipartFile和File 最简单的互转

这篇具有很好参考价值的文章主要介绍了java MultipartFile和File 最简单的互转。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MultipartFile和File 的区别

MuitipartFile 是 Spring 框架中用来处理文件上传的接口,它封装了文件上传的信息,比如文件名、文件类型等。

File 是Java 标准库中提供的文件操作类,用于描述文件信息,比如文件路径、文件大小等

总的来说,MultipantFile 是用来处理文件上传的,而 File 则是用来描述文件信息的。

MultipartFile 与 File 的 互相转换
1. MultipartFile 转 File

最常见的方式(通过文件流写入):

public File multipartFile2File (MultipartFile multipartFile) {
    // 创建临时文件
    String path = "export/demo.xlsx";
    File file = new File(path);
    InputStream inputStream = null;
    FileOutputStream outputStream = null;
    try {
        // 获取文件输入流
        inputStream = multipartFile.getInputStream();
       
        if (!file.exists()) {
            file.createNewFile();
        }
        // 创建输出流
        outputStream = new FileOutputStream(file);
        byte[] bytes = new byte[1024];
        int len;
        // 写入到创建的临时文件
        while ((len = inputStream.read(bytes)) > 0) {
            outputStream.write(bytes, 0, len);
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    } finally {
        // 关流
        try {
            if (outputStream != null) {
                outputStream.close();
            }
            if (outputStream != null) {
                inputStream.close();
            }
            outputStream.close();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    return file;
}

最简单的方式:

使用Spring中的FileCpopyUtils类的copy()方法将MultipartFile 转换为File类型

public File multipartFile2File (MultipartFile multipartFile) {
    String path = "export/demo.xlsx";
    File file = new File(path);
    try {
        if (!file.exists()) {
            file.createNewFile();
        }
        // 底层也是通过io流写入文件file
        FileCopyUtils.copy(multipartFile.getBytes(), file);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return file;
}
2. File 转 MultipartFile

使用org.springframework.mock.web.MockMultipartFile 需要导入spring-test.jar

public MultipartFile file2MultipartFile () {
    String path = "export/demo.xlsx";
    File file = new File(path);
    MultipartFile multipartFile;
    try {
        FileInputStream fileInputStream = new FileInputStream(file);
        multipartFile = new MockMultipartFile("copy"+file.getName(),file.getName(), ContentType.APPLICATION_OCTET_STREAM.toString(),fileInputStream);
        System.out.println(multipartFile.getName()); // 输出demo.xlsx
        fileInputStream.close();
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return multipartFile;
}

 使用CommonsMultipartFile

public MultipartFile file2MultipartFile () {
    String path = "export/demo.xlsx";
    File file = new File(path);
    MultipartFile multipartFile;
    try {
        DiskFileItem fileItem2 = (DiskFileItem) new DiskFileItemFactory().createItem("file", ContentType.MULTIPART.getValue(), true, file.getName());
        //也可以用IOUtils.copy(inputStream,os);
        Files.copy(Paths.get(file.getAbsolutePath()), fileItem2.getOutputStream());
        multipartFile = new CommonsMultipartFile(fileItem2);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
    return multipartFile;
}

 又是摸鱼的一天,,,,,文章来源地址https://www.toymoban.com/news/detail-695913.html

到了这里,关于java MultipartFile和File 最简单的互转的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Springboot获取文件内容,将MultipartFile转File方法

    文件上传以前是噩梦一样的存在,觉得很少麻烦,后来仔细研究后发现通过前端传文件去调取后端接口并不是特别复杂,接下来我详细说一下通过接口的方式接收前端传过来的文件,并且解析文件中内容的方法 话不多说,开整代码 剩下的写业务层,就不多谢业务了,主要写

    2024年02月02日
    浏览(50)
  • Java Base64 和 File 之间互转

    1、Base64 转 File 2、File 转 Base64

    2024年02月16日
    浏览(41)
  • JAVA后端MultipartFile实现文件上传

    2024年02月12日
    浏览(40)
  • JAVA中时间戳和LocalDateTime的互转

    时间戳转LocalDateTime: 要将时间戳转换为LocalDateTime并将LocalDateTime转换回时间戳,使用Java的java.time包。以下是示例代码: LocalDateTime转时间戳:

    2024年02月08日
    浏览(42)
  • 【java】Java基础-数字与字符串的互转汇总

    1、通过ToString() 方法, Double 就是一个包装类,String s1 = Double. toString (num); Integer同理 2、通过valueof() 方法, 本质上还是调用 toString() 方法,String s2 = String. valueOf (num); 3、技巧性,第三种没有借助包装类 String s3 =\\\"\\\"+num; string 和int之间的转换 string转换成int  :Integer.valueOf(\\\"12\\\") 或者

    2023年04月12日
    浏览(51)
  • java MultipartFile+vue+element 批量上传文件、图片,与普通数据同时提交保存才上传到后端

    文件上传项目可参考:点击预览 1.最简单也是最普遍的做法是form表单提交,其实前端提交到后端也是难以离开form表单提交, 一般有两种方式来处理文件、图片上传: 先上传,获取返回路径,再整个表单提交后端保存; 普通数据与文件图片同时提交后端,由后端处理 优点比

    2024年02月03日
    浏览(55)
  • MultipartFile实现文件上传功能

    MultipartFile是spring类型,代表HTML中form data方式上传的文件,包含二进制数据+文件名称。在文件上传这方面能帮助我们快速简洁实现。 1、yml配置文件 2、API介绍 3、文件上传示例 注意: @RequestPart(\\\"file\\\") 主要用来处理content-type为 multipart/form-data 或 multipart/mixed stream 发起的请求,

    2024年02月16日
    浏览(52)
  • Feign传递文件以及MultipartFile对象

    使用spring接收文件可以使用 MultipartFile 对象,并同时使用 RequestPart 注解标识这个一个多媒体参数。 也就是request的 content-Type=multipart/form-data 文件上传provider代码: 同时你可以可以还接收其他参数,例如: 或者这种形式 测试服务提供者 首先要保证服务提供者能够正常接收多媒

    2024年02月04日
    浏览(38)
  • 传json的同时传递多个MultipartFile

    1,Java后端代码:(注意 @RequestPart 注解的使用哦!) 2,Postman测试时的传参: 备注: 如果除文件外都是 query 类型的参数的话,就不需要在除文件参数外的其他地方加任何注解,依旧按照老方法传递即可

    2024年02月13日
    浏览(41)
  • Postman本地测试上传MultipartFile文件接口

    在请求Body中选择form-data传输类型,填写后端file参数名称,并将参数设置为File类型,这时value输入框将变成文件选择框。 如果此时发送请求给后端,会返回报错request is not a multipart request. 我们还需要将数据传输类型Content-Type设置为multipart/form-data.

    2024年02月12日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包