服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java实现文件上传的方法总结

Java实现文件上传的方法总结

2023-04-12 16:17Recently祝祝 Java教程

这篇文章主要为大家介绍了三种Java实现文件上传的方法,文中的示例代码讲解详细,对我们的学习或工作有一定的借鉴价值,感兴趣的可以了解一下

1.文件上传接收文件接口

Controller成通过post上传方式定义接口,上传文件通常使用post的上传方式,get用于获取数据、文件。 单个入参可以使用@RequestParam标注,不用封装到类里边在使用@RepuestBody映射

?
1
2
3
4
5
@PostMapping(value = "/uploadFile")
@ApiOperation(value = "文件上传", notes = "文件上传")
public Result uploadFile(@RequestParam (name = "file") MultipartFile file) throws Exception {
    String url = fileService.uploadFile(file);
}

2.接口主要内容部分

2.1获取文件的相关信息

获取文件主要信息的目的是为了保存文件,通常会使用文件信息来作为文件的保存名称,以下是常用的文件信息获取

?
1
2
3
4
5
6
7
8
//获取文件名称
String originalFilename = file.getOriginalFilename();
// 截取上传文件的后缀
 String uploadFileSuffix = originalFilename.substring(originalFilename.indexOf('.') + 1, originalFilename.length());
 //获取文件父目录
  File Parentlocaltion=localFile.getParentFile();
//获取文件绝对目录
  File localFileAbsoluteFile=localFile.getAbsoluteFile();

需要获取项目所在位置,并且把文件保存到项目同一个目录下。可以用以下方式获取

?
1
String currentDir = System.getProperty("user.dir");

Java实现文件上传的方法总结

File(String pathname):使用给定的路径名字符串创建一个文件对象。

File(String parent, String child):使用给定的父目录路径名字符串和子目录名字符串创建一个文件对象。

createNewFile():创建一个新文件。

mkdir():创建一个新目录。

mkdirs():创建一个新目录,如果必要的话,还会递归地创建父目录。

delete():删除文件或目录。

Java实现文件上传的方法总结

2.2首先需要知道 JAVA根据file的路径创建文件夹

下面的代码将创建一个文件夹,如果文件夹不存在。

  • mkdirs() 方法将递归地创建所有必需的父文件夹。
  • 如果您只需要创建直接的父文件夹,可以使用 mkdir() 方法。
?
1
2
3
4
5
String folderPath = "D:\\uploadFiles\\report\\20230213\\";
File folder = new File(folderPath);
if (!folder.exists()) {
    folder.mkdirs();
}

2.3文件保存到本地:方法一

使用此方法保存必须要绝对路径且文件夹必须已存在,否则报错,所以一般会使用mkdirs,判断文件是否存在后创建文件夹

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public String uploadFile(MultipartFile file) throws Exception {
       File file = new File(fileName);
       try {
           //使用此方法保存必须要绝对路径且文件夹必须已存在,否则报错
          String fileUrl = "D:\\uploadFiles\\report\\" + fileAdd + File.separator + System.currentTimeMillis() + "." + uploadFileSuffix;
           File localFile = new File(fileUrl);
           File Parentlocaltion=localFile.getParentFile();
 
           if (!Parentlocaltion.exists()) { //判断文件父目录是否存在
               Parentlocaltion.mkdirs();
           }
           //FileUtils.copyInputStreamToFile(file.getInputStream(), localFile);
           file.transferTo(localFile);
       } catch (IOException e) {
           e.printStackTrace();
           return dealResultMap(false, "上传失败");
       }*/
       return dealResultMap(true, "上传成功");
}

注意:两个文件对象,分别表示源文件和目标文件。然后,我们创建了两个文件通道,并使用 transferTo 方法将源文件通道中的数据传输到目标文件通道中。

2.4文件保存到本地:方法二

这个方式就是很普通的流写入方式,通过文件流读取文件后,写入本地磁盘

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public String uploadFile(MultipartFile file) throws Exception {
    String fileName = file.getOriginalFilename();
    try {
        //获取文件字节数组
        byte [] bytes = file.getBytes();
        //文件存储路径(/fileupload1/ 这样会在根目录下创建问价夹)
        File pfile = new File("/fileupload1/");
        //判断文件夹是否存在
        if(!pfile.exists()){
            //不存在时,创建文件夹
            pfile.mkdirs();
        }
        //创建文件
        File file = new File(pfile, fileName);
        //写入指定文件夹
        OutputStream out = new FileOutputStream(file);
        out.write(bytes);
    } catch (IOException e) {
        e.printStackTrace();
        return dealResultMap(false, "上传失败");
    }
    return dealResultMap(true, "上传成功");
}

3.postman接口调用

这种调用方式仅限于只有file一个上传文件,入参只是file。项目中如果需要多次上传文件可以进行多次接口调用。

Java实现文件上传的方法总结

到此这篇关于Java实现文件上传的方法总结的文章就介绍到这了,更多相关Java文件上传内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7220237907843317816

延伸 · 阅读

精彩推荐
  • Java教程Java窗口精细全方位讲解

    Java窗口精细全方位讲解

    这篇文章呢,将会系统的精细的教会铁铁们如何自己写一个完整的窗口;看完之后窗口稳拿下!!!所以呢由于详细,知识点多,可能有点长,铁铁们慢慢仔细阅读吧...

    java缝合怪4342021-11-25
  • Java教程Spring动态数据源实现读写分离详解

    Spring动态数据源实现读写分离详解

    这篇文章主要为大家详细介绍了Spring动态数据源实现读写分离,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    二十六度半4462020-12-01
  • Java教程SpringMVC Validator验证示例

    SpringMVC Validator验证示例

    SpringMVC服务器验证一种是有两种方式,一种是基于Validator接口,一种是使用Annotaion JSR-303标准的验证,本篇文章主要介绍,有兴趣的可以了解一下。...

    茶饮月4332020-07-26
  • Java教程MyBatis 使用权威指南

    MyBatis 使用权威指南

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,本文给大家介绍...

    Java教程网5062020-09-01
  • Java教程java底层JDK Logging日志模块处理细节深入分析

    java底层JDK Logging日志模块处理细节深入分析

    这篇文章主要为大家介绍了java底层JDK Logging日志模块处理细节深入分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加...

    qingkangxu6092022-10-21
  • Java教程关于springboot集成swagger3时spring-plugin-core报错的问题

    关于springboot集成swagger3时spring-plugin-core报错的问题

    这篇文章主要介绍了关于springboot集成swagger3时spring-plugin-core报错的问题,本文给大家分享解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋...

    weixin_445096154692021-12-24
  • Java教程几道java循环练习题(适合新人)

    几道java循环练习题(适合新人)

    这篇文章主要给大家介绍了几道java循环练习题,非常适合刚入门的java新人,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学...

    学java的秃头老正太9722021-09-06
  • Java教程Java 动态代理你真的懂了吗(动态和代理)

    Java 动态代理你真的懂了吗(动态和代理)

    动态代理分两部分,动态和代理,今天通过本文给大家普及代码模式及动态代理的概念及示例代码,感兴趣的朋友跟随小编一起看看吧...

    香菜聊游戏5842021-10-03