Java实现文件上传到本地(自定义保存路径)

2023-05-16

首先基于 springboot 实现的,其他场景下可以引入相应的 jar 包后进行整合。

首先写入一个方法,方法的参数为传入的文件,方法的返回值自定义,这里返回类型为 String ,返回文件的存储地址。

public String uploadToLocal(MultipartFile file){
}

接着在方法中进行文件的具体存取操作。

首先获取上传文件的原始名称:

String originName = file.getOriginalFilename();

接着可以指定只能上传 pdf,doc,docx 类型的文件,这里需要先找出文件的后缀来判断上传文件的类型是否合法:

先将指定的后缀存在 set 集合中, set 集合的底层是哈希表,时间复杂度为 O(1)

        Set<String> set = new HashSet<>();
        set.add(".pdf");
        set.add(".doc");
        set.add(".docx");
        set.add(".jpg");

接着找出文件的后缀,首先遍历获取的原始文件名,通过下标遍历这个原始名称,找到第一个"."后结束遍历,然后调用 String.subString(int index) 得到字符串从 index (包括)一直到后面所有的字符串,得到的字符串就是文件的后缀。

        int count = 0;
        for(int i = 0; i < originName.length(); i++){
            if(originName.charAt(i) == '.'){
                count = i;
                break;
            }
        }
        String endName = originName.substring(count);

同时也可以获取到文件类型,比如 ".pdf" 将"."去掉得到类型 pdf

String fileType = originName.substring(count + 1);

再判断文件是否是合法类型,不合法则直接返回错误信息:

        if(!set.contains(endName)){
            return new String("上传的文件类型错误,只能上传pdf,doc,docx,jpg类型的文件");
        }

如果文件类型合法,进行接下来的操作。

首先确定文件的保存路径,可以自定义。这里直接保存在项目父目录下,加入项目叫 test,路径为

test/files/文件类型/保存文件时候的时间(yyyyMMdd)年月日/文件原始名称

这就需要获取当天的日期并格式化为yyyyMMdd格式,并获取文件类型。

路径采用拼接的方式,先获取当前项目的路径然后一步步拼接:

        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String format = sdf.format(new Date());
        String savePath = System.getProperty("user.dir") + "\\" + "files" +   "\\" + fileType + "\\" + format;

最后进行文件的保存,文件保存过程中可能会出现异常,因此用try...catch

        try {
            file.transferTo(new File(folder,saveName));
            String filePath = savePath + "\\" + saveName;
            return new String("文件路径为:" + filePath);
        } catch (IOException e){
            return new String(e.getMessage());
        }

最后返回的String为文件的存储地址,即保存路径 + 文件名。

接下来是方法的完整代码:

    public String uploadToLocal(MultipartFile file){
        // 获取文件原本的名字
        String originName = file.getOriginalFilename();
        // 判断文件是否是pdf文件
        Set<String> set = new HashSet<>();
        set.add(".pdf");
        set.add(".doc");
        set.add(".docx");
        // 取出文件的后缀
        int count = 0;
        for(int i = 0; i < originName.length(); i++){
            if(originName.charAt(i) == '.'){
                count = i;
                break;
            }
        }
        String endName = originName.substring(count); //取出文件类型
        String fileType = originName.substring(count + 1); //文件类型
        if(!set.contains(endName)){
            return new String("上传的文件类型错误,只能上传pdf,doc,docx类型的文件");
        }
        // 创建保存路径
        //日期格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String format = sdf.format(new Date());
        String savePath = System.getProperty("user.dir") + "\\" + "files" +   "\\" + fileType + "\\" + format;
        // 保存文件的文件夹
        File folder = new File(savePath);
        // 判断路径是否存在,不存在则自动创建
        if(!folder.exists()){
            folder.mkdirs();
        }
        String saveName = originName;
        try {
            file.transferTo(new File(folder,saveName));
            String filePath = savePath + "\\" + saveName;
            return new String("文件路径为:" + filePath);
        } catch (IOException e){
            return new String(e.getMessage());
        }
    }

方法可用作工具类,也可以直接用作后端接口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java实现文件上传到本地(自定义保存路径) 的相关文章

  • 2.CPU、IO性能的相关知识

    CPU 需要关注一下几个点 时钟周期速度 核心和线程数量 Cache大小和类型 指令集 CPU的能力通过 xff1a 时钟速率 GHZ cache大小 MB 核心数 槽数 1 缓存 CPU有多级缓存 xff0c 第一级L1是最低延时 但是存
  • yum安装时候报错Repository epel is listed more than once in the configuration

    rpm import https www elrepo org RPM GPG KEY elrepo org rpm Uvh http www elrepo org elrepo release 7 0 3 el7 elrepo noarc
  • InputFilter用法

    如果想设置editVtext用代码限制字数 TextView tv 61 newTextView this int maxLength 61 10 InputFilter fArray 61 newInputFilter 1 fArray
  • Ubuntu18.04下使用Hexo框架搭建个人博客

    欢迎访问我的个人博客 xff0c 传送门 一 安装node js 说明 xff1a 安装node js的原因 xff1a Hexo框架是基于node js 1 推荐使用nvm安装速度快 xff0c 也可自行百度其它方法 wget qO ht
  • 自动跳过bilibili充电鸣谢(油猴脚本)

    脚本地址 xff1a 点击访问
  • ubuntu16.04下安装Python3.6

    今天在配置ubuntu下的pytorch环境 xff0c 由于ubuntu本身自带的是python2 7和python3 5 xff0c 想下载一个python3 6 xff0c 并在virtualenv中装pytorch xff0c 中间
  • 利用zabbix自带模板监控网络设备及配置邮件告警

    网络设备配置snmp xff0c 这里我们用H3C设备举例 xff0c 持续关注后续会更新如何创建自定义监控项 这里我们用Tempate Moudule Interfaces SNMP做示例 xff0c 这个模板包括接口的状态 出入方向带宽
  • ffmpeg av_read_frame返回AVERROR_EOF

    最近在调试的时候总是发现av read frame 返回AVERROR EOF xff0c 但是我这是网络传输rtsp xff0c 怎么会是文件结尾呢 xff0c 网络上搜了一下没结果 xff0c 只能自己看源码了 xff0c 结果发现在t
  • windows10远程登陆切换用户

    在windows10下部署IIS网站时 xff0c 利用Administrator部署过程中总是出现各种问题 xff0c 因此选择用普通账户进行部署 xff0c 由于电脑只能远程登陆 xff0c 这里记录一下 xff0c 作为以后的参考 打
  • 教你如何用Dockerfile自定义构建一个Nodejs环境Docker镜像

    教你如何用Dockerfile自定义构建一个Nodejs环境Docker镜像 注意 xff1a 请先安装Docker工具 废话少说 xff0c 直接上Dockerfile 使用Python3基础镜像 FROM python 3 10 alp
  • Centos7安装mongoDB详细过程

    添加MongoDB的YUM仓库 在终端中执行以下命令 xff0c 添加MongoDB的YUM仓库 xff1a sudo vi etc yum repos d mongodb org 4 4 repo 在打开的文件中 xff0c 输入以下内容
  • python:性能优化(一)

    python性能优化 01 在列表里面计数 性能 xff1a 第二种计数方法比第一种快不要太多 xff0c 因为Python原生的内置函数都是优化过的 xff0c 所以能用原生的计算的时候 xff0c 尽量用原生的函数来计算 xff0c 所
  • 这20个Pandas函数一定要牢记,建议收藏!!

    来自 xff1a Deephub IMBA Pandas 是数据科学社区中使用最广泛的库之一 xff0c 它是一个强大的工具 xff0c 可以进行数据操作 清理和分析 本文将提供最常用的 Pandas 函数以及如何实际使用它们的样例 我们将
  • multipart/form-data方式上传text以及文件,类似微博发照片

    actionUrl 地址 params text参数以及值 files 文件参数以及文件 username 认证用户名 passwd 认证密码 public static String postFile String actionUrl M
  • UOS Deepin Linux 系统引导丢失修复

    本篇文章讲解通俗易懂 xff0c 以全新的方式修复引导 xff0c 但第一次使用可能会比较麻烦 xff0c 适用于Linux小白用户 也适合别的方法看不懂 不会操作 操作无效等情况 xff08 就是那种操作没有一点问题 xff0c 但就是搞
  • 机会总是留给有准备的人

    qqq
  • chrome---分析js、css脚本的使用率

    打开开发者工具 gt 点击三个点 xff08 选More tools xff09 gt 选中coverage gt 点击reload gt 双击脚本 xff08 进去可以看到脚本哪些内容被用到 xff0c 哪些没有被用到 xff09
  • 【Java生产者消费者问题总结】

    java生产者消费者问题总结 1 wait notify方法实现 public class Test private static Integer count 61 0 private final Integer FULL 61 5 定义生
  • Spring知识点总结 Spring基础到深入(持续更新)

    1 概述 Spring是一个开源框架 Spring为简化企业级开发而生 xff0c 使用Spring xff0c JavaBean就可以实现很多以前要靠EJB才能实现的功能 同样的功能 xff0c 在EJB中要通过繁琐的配置和复杂的代码才能
  • L1-020 帅到没朋友 (20分)

    当芸芸众生忙着在朋友圈中发照片的时候 xff0c 总有一些人因为太帅而没有朋友 本题就要求你找出那些帅到没有朋友的人 输入格式 xff1a 输入第一行给出一个正整数N xff08 100 xff09 xff0c 是已知朋友圈的个数 xff1

随机推荐