springmvc 上传文件,单个文件,多个文件

2023-05-16

1.Java代码部分:

1.1spring配置:

    <!-- 定义文件上传解析器 -->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设定默认编码 -->
        <property name="defaultEncoding" value="UTF-8"></property>
        <!-- 设定文件上传的最大值5MB,5*1024*1024 -->
        <property name="maxUploadSize" value="5242880"></property>
    </bean>

1.2Controller层代码(上传单个文件)

@RequestMapping("/upload")
    public String uploadFile(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
        if (!file.isEmpty()) {
            try {
                //文件存放位置
                String path = request.getServletContext().getRealPath("/upload/archive/");
                System.out.println("String path = " + path);
                File dir = new File(path + File.separator + "老人111");
                if (!dir.exists()) {
                    dir.mkdirs();
                }

                // 写文件到服务器
                File serverFile = new File(dir.getAbsolutePath() + File.separator + file.getOriginalFilename());
                file.transferTo(serverFile);
                return "You successfully uploaded file=" + file.getOriginalFilename();
            } catch (Exception e) {
                return "You failed to upload " + file.getOriginalFilename() + " => " + e.getMessage();
            }
        } else {
            return "You failed to upload " + file.getOriginalFilename() + " because the file was empty.";
        }

    }

1.3Controller层代码(单个input上传多个文件)

@RequestMapping("/uploadManyFile")
    public String uploadManyFile(@RequestParam("file") MultipartFile[] files,//接受参数是数组 HttpServletRequest request) {

        if (files.length != 0) {
            try {
                for (MultipartFile file : files) {
                    //文件存放位置
                    String path = request.getServletContext().getRealPath("/upload/archive/");
                    File dir = new File(path + File.separator + "老人222");
                    if (!dir.exists()) {
                        dir.mkdirs();
                    }
                    // 写文件到服务器
                    File serverFile = new File(dir.getAbsolutePath() + File.separator + file.getOriginalFilename());
                    file.transferTo(serverFile);
                }
                return "成功了";
            } catch (Exception e) {
                return "上传失败了,异常:" + e.getMessage();
            }
        } else {
            return "空的嗷";
        }
    }

1.4Controller层代码(多个input,每个input上传若干个文件)

@RequestMapping("/uploadManyFile")
    public String uploadManyFile(@RequestParam("files1") MultipartFile[] files1,
                                 @RequestParam("files2") MultipartFile[] files2//@RequestParam分别对应input的name
                                 ,HttpServletRequest request) {

        if (files1.length != 0 && files2.length != 0) {
            try {
                for (MultipartFile file : files1) {
                    //文件存放位置
                    String path = request.getServletContext().getRealPath("/upload/archive/");
                    File dir = new File(path + File.separator + "老人333" + File.separator +"身份证");
                    if (!dir.exists()) {
                        dir.mkdirs();
                    }
                    // 写文件到服务器
                    File serverFile = new File(dir.getAbsolutePath() + File.separator + file.getOriginalFilename());
                    file.transferTo(serverFile);
                }
                for (MultipartFile file : files2) {
                    //文件存放位置
                    String path = request.getServletContext().getRealPath("/upload/archive/");
                    File dir = new File(path + File.separator + "老人333" + File.separator +"正明");
                    if (!dir.exists()) {
                        dir.mkdirs();
                    }
                    // 写文件到服务器
                    File serverFile = new File(dir.getAbsolutePath() + File.separator + file.getOriginalFilename());
                    file.transferTo(serverFile);
                }
                return "成功了";
            } catch (Exception e) {
                return "上传失败了,异常:" + e.getMessage();
            }
        } else {
            return "空的嗷";
        }
    }

2.页面部分

2.1上传单个文件页面

<html>
<head>
    <title>Title</title>
</head>
<body>
    <form enctype="multipart/form-data" action="${pageContext.request.contextPath}/home/upload" method="post">
        <input type="file" name="file" >
        <input type="submit" value="提交">
    </form>
</body>
</html>

2.2单个input(type=file)上传多个文件页面

<html>
<head>
    <title>Title</title>
</head>
<body>
    <form enctype="multipart/form-data" action="${pageContext.request.contextPath}/home/uploadManyFile" method="post">
  		 <!-- 一个input上传多个文件,加个multiple-->
        <input type="file" name="file" multiple>
        <input type="submit" value="提交">
    </form>
</body>
</html>

2.3多个input,每个input上传若干个文件页面

<html>
<head>
    <title>Title</title>
</head>
<body>
    <form enctype="multipart/form-data" action="${pageContext.request.contextPath}/home/uploadManyFile" method="post">
        <!-- 每个input的name属性不同-->
        <input type="file" name="files1" multiple>
        <input type="file" name="files2" multiple>
        <input type="submit" value="提交">
    </form>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springmvc 上传文件,单个文件,多个文件 的相关文章

  • 介绍一个成功的 Git 分支模型

    英文原文 xff0c A successful Git branching model xff0c 翻译 xff1a 开源中国 在这篇文章中 xff0c 我提出一个开发模型 我已经将这个开发模型引入到我所有的项目里 xff08 无论在工作还
  • 浪潮服务器通过BMC远程安装系统

    浪潮服务器的BMC xff0c 类似于IBM服务器的IPMI xff0c 可以远程安装系统或者其他操作 前提 xff1a 1 带外ip xff1a 192 168 1 100 在bios的 lan channel 1 里面配置带外ip xf
  • Linux|错误集锦|prometheus Error on ingesting samples that are too old or are too far into the future的解决

    前情回顾 xff1a 二进制prometheus部署完成后 xff0c 在prometheus的web界面进行一些数据验证工作 下面这个是我已经恢复正常的 xff0c 其实是查询不到数据的 grafana也接收不到任何数据 问题排查 xff
  • 《软件工程导论》/ 第一章 软件工程学概述 / 1.3 软件生命周期

    概括地说 xff0c 软件生命周期由3个时期组成 xff0c 每个时期又进一步划分成若干个阶段 xff1a 软件定义 xff08 问题定义 可行性研究 需求分析 xff09 软件开发 xff08 总体设计 详细设计 编码和单元测试 综合测试
  • python开发PC端桌面应用

    项目场景 xff1a 很多情况下需要用很短的时间开发一款在windows上离线运行的小工具 xff0c 以便解决一些现实问题 比如公司近期有个紧急项目 xff0c 需要根据算法需求人工标注海量的地址信息 xff0c 开发周期和工具易用性上都
  • Vue和Flask实现前后端分离

    引言 近期了解了下目前比较热门的前端框架Vue js xff0c 新技能嘛 xff0c 只有实践了用起来了 xff0c 才能有比较直观的体验 因此考虑写个小demo练练手 xff0c 后端采用Flask提供几个Restfull风格的API
  • C/S架构的应用程序开发实战(一)

    项目背景 近期需要开发一个对巨量的图片数据进行车辆品牌信息标注的工具 xff0c 为了提高标注效率 xff0c 准备先通过现有车辆品牌识别的算法模型进行下预标注 xff0c 标注人员在此基础上进行审核和修改即可 另外 xff0c 需要统计出
  • Nginx服务安全漏洞修复

    1 安全漏洞说明 使用Nginx提供服务的产品 xff0c 经过安全扫描工具扫描后报出三个高风险 三个中风险安全漏洞 2 nginx版本过低自带安全漏洞 升级nginx版本到1 21 1后 xff0c 三个高风险漏洞消失 3 HTTP 信息
  • C/S架构的应用程序开发实战(二)

    后端服务 后端用python实现 xff0c 采用flask web框架 可从github上获取flasky源码 xff0c 在此基础上进行业务逻辑的实现 程序结构如下 xff1a app 业务逻辑实现代码 common 公共函数实现 这里
  • MySql安装相关

    windows安装mysql xff1a 1 获取并解压安装包 xff1a mysql 8 0 20 winx64 zip 2 配置环境变量 xff1a 3 管理员权限打开cmd xff0c 进入安装目录 xff1a H gt cd H t
  • MySql之索引

    通常小型项目涉及数据量比较小 xff0c 数据查询频率不高 xff0c 索引通常会被忽略 但当数据量较大 xff0c 涉及多个表 xff0c 查询较为频繁时 xff0c 我们需要对查询性能进行优化 xff0c 此时 xff0c 建立合适的索
  • jupyter-notebook二次开发

    背景 公司内部提供给算法人员用于模型训练的平台开发需求中提出了嵌入Jupyter Notebook模块 xff0c 而Jupyter Notebook是开源的 xff0c 方便后续对部分细节进行功能定制和优化 xff0c 需要对其进行调研
  • python中大数据文件读取

    python中大数据文件读取 python中经常会遇到读取大文件的场景 文件较小时 xff0c 我通常采用下面方法 xff0c readlines xff08 xff09 xff0c 该方法会一次性读取文件的所有行 xff0c 并将其放入l
  • Linux|奇怪的知识|locate命令---文件管理小工具

    前言 Linux的命令是非常多的 xff0c 有一些冷门的命令 xff0c 虽然很少用 xff0c 但可能会有意想不到的功能 xff0c 例如 xff0c 本文将要介绍的locate命令 xff08 平常很少会想到使用此命令 xff0c f
  • python之装饰器

    引言 软件开发中 xff0c 当需要创建高度重复的代码时 xff0c 需要寻求一种优雅的解决方案 python中的元编程即解决这类问题 xff0c 通过创建函数和类来修改 生成或包装已有的代码 装饰器就是python中用来包装函数的一种机制
  • docker容器中程序退出异常,GPU未释放

    1 问题描述 近期在docker容器中对一批数据通过算法进行清洗时 xff0c 当数据处理完成后发现进程未正常退出 xff0c GPU内存未正常释放 span class token punctuation span root 64 ai6
  • 初识Redis

    什么是Redis Remote Dictionary Server xff0c 即远程字典服务 xff0c 是一款开源的 基于内存也支持持久化的key value数据库 xff0c 提供多种语言API 通常应用于需要处理大规模数据读写的场景
  • python之闭包

    前言 闭包作为python高级特性中的一个 xff0c 初学总觉其披着一层神秘的面纱 xff0c 这里我们来一起揭开这层面纱吧 那什么是闭包呢 xff1f 闭包 xff0c 又称闭包函数 xff0c 和普通的嵌套函数类似 xff0c 闭包中
  • 三个基础排序算法

    排序在计算机算法中非常常见也非常基础 xff0c 不管是准备面试还是纯属兴趣 xff0c 掌握它都很有必要 选择排序 基本思想 xff1a 预置list i 为最小 xff0c 逐个比较range i len list 里的元素 xff0c
  • 数据结构之链表

    和顺序表相对应 xff0c 有个链式存储的数据结构 xff0c 命名曰链表 单链表 节点中只存储后项节点指针的链表 xff0c 称为单链表 定义节点 class LinkNode object def init self data 61 N

随机推荐

  • 数据结构之哈希表

    概念 哈希表是一种数据结构 xff0c 通过哈希函数来组织数据 xff0c 以支持快速插入和搜索 哈希表的关键思想是使用哈希函数将键映射到存储桶 更确切地说 xff0c 当我们插入一个新的键时 xff0c 哈希函数将决定该键应该分配到哪个桶
  • 图片数据清洗

    前言 数据对于深度学习算法模型的效果至关重要 通常 xff0c 在对采集到的大量数据进行标注前需要做一些数据清洗工作 对于大量的数据 xff0c 人工进行直接清洗速度会很慢 xff0c 因此开发一些自动化清洗工具对批量数据首先进行自动清洗
  • PyQt5 多线程实例

    前言 PyQt的所有窗口都在UI主线程中 xff0c 也就是main函数中执行了QApplication exec 的线程中 xff0c 在该线程中执行耗时较长的操作时 xff0c 会导致当前窗口停止响应 为了避免上述情况发生 xff0c
  • 模型评价标准

    机器学习 机器学习是通过一些让计算机可以自动学习的算法 xff0c 从数据中分析获得规律 xff0c 然后利用规律对新样本进行预测 评价标准 为了了解模型的泛化能力 xff0c 即判断模型的好坏 xff0c 我们需要用某个指标来衡量 xff
  • postgresql|数据库|【postgresql-12的基于pg_basebackup的主从复制部署】

    前言 xff1a postgresql数据库说实话是真心好用 xff0c 但 xff0c 想用好是比较困难的 那么 xff0c 造成该数据库使用困难的是它的内置工具非常的多 xff0c 并且整体优化是比较难的 比如 xff0c 自带的备份工
  • windows上的中文文件名上传到linux上乱码问题解决

    问题描述 有很多多层文件夹存放的数据保存在windows上 xff0c 文件夹和文件名均含有中文 xff0c 将这些文件目录传到linux上 xff0c 中文名显示乱码 问题分析 windows上中文默认编码格式是gbk xff0c 而li
  • JAVA 面试题经典(附答案)

    JAVA JAVA8大基本数据类型 J AVA8大基本数据类型 HashMap和Hashtable的比较 Hashtable xff1a 1 Hashtable不允许key或者value为null xff0c 线程安全 xff0c 实现线程
  • u盘写入映像时提示:主引导记录(mbr)写入失败!!

    在使用软件写入U盘镜像时 xff0c 出现下面的提示 xff1a 解决方法是使用DiskGenius重新建立MBR
  • debian SID安装笔记

    1 声卡设置问题 添加了声卡驱动 xff0c 但是进入桌面没有声音 xff1f 一般是没有给用户使用设备的权限 解决方法 xff1a adduser audio eg adduser jerry audio xff08 解决 xff09 你
  • ubuntu下vncserver配置

    Ubuntu下设置VNCServer Virtual Network Computing VNC 是进行远程桌面控制的一个软件 客户端的键盘输入和鼠标操作通过网络传输到远程服务器 xff0c 控制服务器的操作 服务器的图形界面通过网络传输会
  • vsftp配置实例-虚拟用户锁定目录

    一 实验步骤 1 创建用户 创建ftpuser1登录用户 useradd g ftp d share soft s sbin nologin ftpuser1 为ftpuser1设置登录密码 passwd ftpuser1 2 编辑配置文件
  • 基于51的光立方制作

    单片机入门者必然会从点亮一盏LED灯开始 xff0c 如果LED数量比较多 xff0c 就不能使用单个引脚去控制 xff0c 例如光立方 xff0c 利用锁存器和人体的视觉暂留效果就可以占用少量引脚实现光立方 所需材料 xff1a STC8
  • 如何实现无界面Android app

    如何实现无界面Android app 前言代码实现AndroidManifest xmlMainActivity javaMyService java 前言 在Android开发中 xff0c 可能会遇到只需要在后台运行服务 xff0c 不
  • 惊呆面试官的回答:HashMap和TreeMap的区别

    前几天 xff0c 有一位粉丝在直播间问了我这样一个问题 xff0c 说HashMap和TreeMap有什么区别 今天 xff0c 我给大家分享一下我的理解 1 两者区别 我们知道不管是HashMap还是TreeMap xff0c 都是通过
  • postgresql|【基于pg_basebackup命令的归档备份和恢复---热备冷恢复方式】

    一 xff0c 基本原理和步骤 备份 xff1a 使用pg basebackup命令来进行备份 xff0c 这个命令可以将postgresql的数据文件备份为两个压缩文件 xff1a base tar和 pg wal tar 本别是数据文件
  • js获取对象属性的两种方式

    一 如果属性名称是常量 xff08 固定值 xff09 xff0c 获取属性值的方式有 xff1a 1 对象 属性名称 如 obj age 2 对象 属性名称 如 obj age 二 如果属性名称是一个变量 xff0c 值不固定 xff0c
  • 关于Eclipse的Unhandled event loop exception No more handles

    今天用了公司一台电脑做开发 xff0c 在运行eclipse以及myeclipse点击java代码窗口内部时 xff0c 都遇到如下图所示的问题 xff1a 上网查了一下错误的原因 xff1a 因为一些进程和eclipse起了冲突 下面我来
  • IDEA较新版本,编译xml文件(src/main/java下的xml等)

    IDEA较新版编译src main java下的文件 问题 xff1a 原因 xff1a 解决 xff1a 实际应用代码 xff1a 问题 xff1a 在导入新项目时 xff0c 由于项目中整合了Mybatis xff0c 一些mapper
  • IDEA 2018.3.2 版本配置SVN

    IDEA 2018 3 2 版本配置SVN 1 首先安装TortoiseSVN2 配置IDEA3 IDEA开启SVN 1 首先安装TortoiseSVN 安装的过程中 xff0c 需要勾选command line client tools
  • springmvc 上传文件,单个文件,多个文件

    1 Java代码部分 xff1a 1 1spring配置 xff1a span class token operator lt span span class token operator span span class token ope