返回顶部
首页 > 资讯 > 精选 >Java中MultipartFile与File互转如何实现
  • 151
分享到

Java中MultipartFile与File互转如何实现

2023-07-05 12:07:12 151人浏览 安东尼
摘要

这篇文章主要介绍了Java中MultipartFile与File互转如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中MultipartFile与File互转如何实现文章都会有所收获,下面我们一起

这篇文章主要介绍了Java中MultipartFile与File互转如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中MultipartFile与File互转如何实现文章都会有所收获,下面我们一起来看看吧。

    前言

    需求是上传excel文件并读取Excel文件中的内容,根据获取的数据执行完某些业务操作后再将一些数据写回到excel中。前台使用FORMData表单的方式请求后台,后台接收类型是MultipartFile,放置文件过大时会造成内存溢出需要转换为File类型

    MultipartFile转File

    其实转换的本质都是要创建一个file的临时文件,然后通过各种实现方式将MultipartFile中的内容写入到file中

    1.FileUtils.copyInputStreamToFile转换

    package com.cxstar.file.util;import org.apache.commons.io.FileUtils;import org.springframework.WEB.multipart.MultipartFile;import java.io.File;import java.io.IOException;public class FileTestUtils {        public static File multiPartFileToFile(MultipartFile multipartFile) throws IOException {        //获取文件名        String originalFilename = multipartFile.getOriginalFilename();        //获取默认定位到的当前用户目录("user.dir"),也就是当前应用的根路径        String tempDir = System.getProperty("user.dir");        //根目录下生成临时文件        File file = new File(tempDir+File.separator+originalFilename);        FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);        return file;    }}

    此种方式的弊端就是需要在调用此方法后需要再手动删除,也就是要在业务代码中再掺杂删除的逻辑。

    2.multipartFile.transferTo(tempFile);

        public static File multiPartFileToFile2(MultipartFile multipartFile) throws IOException {        //获取文件名        String originalFilename = multipartFile.getOriginalFilename();        //获取默认定位到的当前用户目录("user.dir"),也就是当前应用的根路径        String tempDir = System.getProperty("user.dir");        //获取文件名        String filename = StringUtils.substringBeforeLast(originalFilename, ".");        //获取文件后缀        String fileExt = StringUtils.substringAfterLast(originalFilename, ".");        //在项目根路径生成临时文件        File tempFile = File.createTempFile(filename, "." + fileExt, new File(tempDir));        multipartFile.transferTo(tempFile);        //在JVM退出时执行删除此路径下的文件        tempFile.deleteOnExit();        return tempFile;    }

    注意:
    1.防止生成的临时文件,createTempFile()方法会在文件名后添加随机码
    2.生成的文件不会立马删除,而是在jvm退出时执行删除此路径下的文件

    Java中MultipartFile与File互转如何实现

    3. (推荐)FileUtils.writeByteArrayToFile(file, multipartFile.getBytes());

    package com.cxstar.file.util;import org.apache.commons.io.FileUtils;import org.springframework.web.multipart.MultipartFile;import java.io.*;public class FileTestUtils {        public static File multiPartFileToFile3(MultipartFile multipartFile) {        File file = null;        if (multipartFile.isEmpty()) {            return null;        }        try {            //本质上还是在项目根路径创建文件            file = new File(multipartFile.getOriginalFilename());            //将MultipartFile的byte[]写入到file中            FileUtils.writeByteArrayToFile(file, multipartFile.getBytes());        } catch (IOException e) {            e.printStackTrace();        }        return file;    }}

    此种方式相较于第二种方式,文件名不会发生改变,当然还是要手动删除

    Java中MultipartFile与File互转如何实现

    File转MultipartFile

    MultipartFile文件上传时,其实springMVC已经转为StandardMultipartFile子类型

    org.springframework.web.multipart.support.StandardMultiparthttpservletRequest$StandardMultipartFile

    Java中MultipartFile与File互转如何实现

    MultipartFile是一个接口,因此转成MultipartFile格式需要转成实现MultipartFile接口的实现类即可

    Java中MultipartFile与File互转如何实现

    package com.cxstar.file.util;import org.springframework.mock.web.MockMultipartFile;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.FileInputStream;public class FileTestUtils {    public static MultipartFile getMultipartFile(File file) throws Exception {        MultipartFile multipartFile = new MockMultipartFile(file.getName(), new FileInputStream(file));        return multipartFile;}

    关于“Java中MultipartFile与File互转如何实现”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Java中MultipartFile与File互转如何实现”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

    --结束END--

    本文标题: Java中MultipartFile与File互转如何实现

    本文链接: https://lsjlt.com/news/351602.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • Java中MultipartFile与File互转如何实现
      这篇文章主要介绍了Java中MultipartFile与File互转如何实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中MultipartFile与File互转如何实现文章都会有所收获,下面我们一起...
      99+
      2023-07-05
    • Java中MultipartFile与File互转的实现
      目录前言MultipartFile转File1.FileUtils.copyInputStreamToFile转换2.multipartFile.transferTo(tempFil...
      99+
      2023-03-14
      Java MultipartFile与File互转 Java MultipartFile与File
    • java中MultipartFile互转File的方法
      目录MultipartFile转FileFile转MultipartFile  PS:file转base64字符串MultipartFile转File 公司业务遇到需要接收...
      99+
      2024-04-02
    • java MultipartFile和File 最简单的互转
      MultipartFile和File 的区别 MuitipartFile 是 Spring 框架中用来处理文件上传的接口,它封装了文件上传的信息,比如文件名、文件类型等。 File 是Java 标准库中提供的文件操作类,用于描述文件信息,比...
      99+
      2023-09-11
      java 开发语言
    • Blob实现与File DataURL canvas相互转换示例
      目录引言一、概念介绍二、相互转化2-1. dataURL(base64) 转化成 Blob(二进制)对象2-2. File、Blob 文件数据...
      99+
      2024-04-02
    • Java BeanMap如何实现Bean与Map的相互转换
      本篇内容主要讲解“Java BeanMap如何实现Bean与Map的相互转换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java BeanMap如何实现Bean与Map的相...
      99+
      2023-07-04
    • Java中 实体类与Map互转
      1、map转对象; 主要思路,将map中的key-value取出来,然后和给定的对象去匹配 public static T mapToBean(Map map, Class clazz) throws Exception {Object ...
      99+
      2023-10-11
      java jvm 开发语言
    • Java中string与int怎么实现互相转换
      本篇文章为大家展示了Java中string与int怎么实现互相转换,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。int -> String int i=12345;String s="...
      99+
      2023-05-31
      java string int
    • Java中inputstream转file怎么实现
      可以通过以下方法将InputStream转换为File: import java.io.*; public class Main ...
      99+
      2024-03-01
      Java
    • Java如何实现二维数组与稀疏数组互转
      这篇文章主要介绍了Java如何实现二维数组与稀疏数组互转的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java如何实现二维数组与稀疏数组互转文章都会有所收获,下面我们一起来看看吧。二维数组二维数组本质上是以数组...
      99+
      2023-06-29
    • java项目中如何实现集合的相互转换
      这篇文章给大家介绍java项目中如何实现集合的相互转换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.List转换为ArrayList<String> list = new ArrayList<St...
      99+
      2023-05-31
      java 集合转换 相互
    • Java中BeanMap怎么实现对象与Map相互转换
      这篇文章主要介绍“Java中BeanMap怎么实现对象与Map相互转换”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java中BeanMap怎么实现对象与Map相互转换”文章能帮助大家解决问题。ja...
      99+
      2023-06-29
    • C++实现String与UF8互转
      UTF8_To_String #include<Stringapiset.h> #include <iostream> std::string UTF8_T...
      99+
      2024-04-02
    • 如何用ADO.NET实现txt与Excel的互相转换
      本篇文章为大家展示了如何用ADO.NET实现txt与Excel的互相转换,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在园子里看过很多文章,关于设计模式,关于架构等等,我在这里谈谈一些软件的功能,为...
      99+
      2023-06-17
    • SQL如何实现横表与纵表相互转换
      目录一、横表简单概述二、纵表简单概述三、纵表转横表代码如下以及视图展示四、横表转纵表代码如下以及视图展示五、横表、纵表优点与缺点六、总结一、横表简单概述 横表是普通的建表方式。例如:表结构为主键、字段1、字段2、字段3&...
      99+
      2023-04-24
      SQL 横表与纵表转换 SQL 横表与纵表
    • java中JSONArray互相转换List的实现
      目录1:JSONArray转List2:List转JSONArray1:JSONArray转List JSONArray字符串 转 List //初始化JSONArray JSONA...
      99+
      2024-04-02
    • java 中InputStream,String,File之间的相互转化对比
      InputStream,String,File相互转化 1. String --> InputStreamInputStream String2InputStream(String str){ ByteArrayInputS...
      99+
      2023-05-31
      java inputstream string
    • Java如何实现bmp和jpeg图片格式互转
      这篇“Java如何实现bmp和jpeg图片格式互转”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java如何实现bmp和jp...
      99+
      2023-07-06
    • json与javabean怎么实现互转
      json与javabean怎么实现互转?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。JSONObject 与 JSONArray区别JSONObject:{"ar...
      99+
      2023-06-14
    • 聊聊PHP中Base64 、Blob与File的相互转换方法
      本篇文章给大家带来了关于php的相关知识,其中主要跟大家聊一聊Base64 、Blob和File之间是怎么相互转换的?感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。前言在获取图片时,遇到需要转换格式的情况,所以记录下来分享。正文一、格式...
      99+
      2023-05-14
      前端
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作