form表单中使用fileUpLoad上传文件

2023-11-20

在最近的项目中,需要对用户的头像就行上传。这里了解到使用appche的。大家可自行到mvn库搜索jar包名进行下载。

这里需要注意的是代码中对参数的读取。正常情况下我么使用getparameter方法进行读取表单数据,但是因为在form中我们必须设置enctype=“multipart/form-data”,故在进行表单的读取时要进行判断是否为multipart类型。

具体代码类似如下:

boolean isMultipart = ServletFileUpload.isMultipartContent(request);
                System.out.println("isMultipart    "+isMultipart);
                try {
                    String  teaName="";
                    String  teaCardid="";
                    String teaSex="";
                    String[] teaHobby=new String[3];
                    String hobby="";
                    int count=0;
                    String teaType="";
                    Date teaDate=null;
                    String teaEmail=""; 
                    String teaPhone="";
                    Blob teaPic=null;
                    if(isMultipart ) {
                    FileItemFactory factory =new DiskFileItemFactory();
                    ServletFileUpload upload=new ServletFileUpload(factory);
                        //获取前台输入的数据,保存在items中
                        upload.setHeaderEncoding("utf-8");
                        List<FileItem> items = upload.parseRequest(request);
                        //遍历items中的数据
                        Iterator<FileItem> iter = items.iterator();
                        while(iter.hasNext()) {
                            FileItem item = iter.next();
                            String itemName=item.getFieldName();//获取itemname
                            //判断前端字段是普通表单字段还是文件字段
                            if(item.isFormField()) {//是普通表单字段
                                if(itemName.equals("tea_name")) {//根据name判断
                                    teaName=item.getString("utf-8");
                                    System.out.println("teaName ---"+teaName);
                                    
                                }else if(itemName.equals("tea_cardid")) {
                                    teaCardid=item.getString("utf-8");
                                    System.out.println("teaCardid---"+teaCardid);
                                }else if(itemName.equals("tea_sex")) {
                                    teaSex=item.getString("utf-8");
                                    System.out.println("teaSex---"+teaSex);
                                }else if(itemName.equals("tea_hobby")) {
                                    String teaHobbys=item.getString("utf-8");
                                    System.out.println("teaHobby"+count+"----"+teaHobbys);
                                    teaHobby[count]=teaHobbys;
                                    hobby = teaHobby.toString();
                                    System.out.println(hobby);
                                    count++;
                                }else if(itemName.equals("tea_date")) {
                                    String date=item.getString("utf-8");
                                    System.out.println("date---"+date);
                                    SimpleDateFormat format=new SimpleDateFormat("yyyy-mm-dd");
                                    teaDate=format.parse(date);
                                    System.out.println("teaDate----"+teaDate);
                                }else if(itemName.equals("tea_type")) {
                                    teaType=item.getString("utf-8");
                                    System.out.println("teaType---"+teaType);
                                }else if(itemName.equals("tea_phone")) {
                                    teaPhone=item.getString("utf-8");
                                    System.out.println("teaPhone---"+teaPhone);
                                }else if(itemName.equals("tea_email")) {
                                    teaEmail=item.getString("utf-8");
                                    System.out.println("teaEmail----"+teaEmail);
                                }
                            }else {//获取文件
                                String fileName=item.getName();//获取文件的名,区别于getfieldname
                                System.out.println(fileName);
                                String file=fileName.substring(fileName.indexOf(".")+1);
                                System.out.println(file);
                                if(!(".jpg".equals(file)||".png".equals(file)||".jpeg".equals(file)||".gif".equals(file))) {
                                    return;
                                }else {
                                    item.write();//此处类似流的操作,我是将其转换为Blob类型进行数据库的存储就,建议大家在数据库中存路径,一是读取方便快捷,二是代码也会简单
                                }
                            }
                            
                        }

 

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

form表单中使用fileUpLoad上传文件 的相关文章

随机推荐

  • Obsidian 入门使用手册

    文章目录 一 Obsidian 入门 1 1 什么是 Obsidian 1 2 安装 Obsidian 二 Obsidian 配置 2 1 创建第一个笔记 2 2 设置界面语言使用中文 2 3 主题 三 小结 一 Obsidian 入门 1
  • VScode配置文档

    vscode配置 常用插件 View In Browser 预览页面 ctrl F1 vscode icons 侧栏的图标 对于一个有视觉强迫症的人是必须要的 HTML Snippets 支持HTML5的标签提示 JS CSS HTML F
  • 泰凌微 IDE使用心得

    Telink IDE 1 5 这可能是我用过最难用的IDE 没有之一
  • ARL资产侦察灯塔系统搭建及使用

    ARL资产侦察灯塔系统搭建及使用 ARL Asset Reconnaissance Lighthouse 资产侦查灯塔旨在快速发现并整理企业外网资产并为资产构建基础数据库 无需登录凭证或特殊访问即可主动发现并识别资产 让甲方安全团队或者渗透
  • 微机原理:汽车速度控制系统的设计与实现

    一 设计内容 汽车速度控制系统 在自行设计接口板的按键转换汽车的挡位 发光二极管显示挡位 数码管显示汽车的速度 加速控制 拨动对应的档位再拨动加速开关 数码管显示速度递增至99 加速要与档位匹配 若不匹配则 加速失效 减速控制 拨动减速开关
  • 学习DOM

    DOM的概述 DOM document object model 文档对象模型 顾名思义他就是用于操作对应的文档的 也就是操作你写的html文档 DOM是一个遵从文档流的语句 所以他是同步机制 DOM的分类 document dom操作中最
  • mybatis异常:nested exception is org.apache.ibatis.builder.BuilderException

    这里我使用的是Mybatis plus然后报的异常 接口如下 xml如下 本来以为一切正常却忽略了接收参数的实体参数名字 也就是接受参数名和xml当中的参数名不一致导致异常 其次是接参里面并没有这几个参数 以至于他也会报这种错误的
  • Python GUI案例之看图猜成语开发(第二篇)

    Python GUI案例之看图猜成语 第二篇 前言 看图猜成语小程序开发 第二篇 游戏选择模式页面 游戏训练模式页面 Python GUI案例之看图猜成语开发 第一篇 Python GUI案例之看图猜成语开发 第三篇 Python GUI案
  • QString转const char*

    QString str hello world 转成const char const char arr str toStdString c str const char arr str toLatin1 constData toUtf8 转
  • [从零开始学习FPGA编程-28]:进阶篇 - 基本组合电路-奇偶校验生成器(Verilog语言版本)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 奇偶校验生成器 1 1 什么是奇校验 1 2 Verilog语言描述
  • devtools安装_R语言入门之R包的安装

    R语言是一个强大的数据分析工具 其强大之处在于有各种各样的R包帮助其实现各种各样的功能 通常来说 R包的安装主要有四种方法 包括 1 从R语言官网上直接下载相关R包并安装 2 从Bioconductor上下载R包并安装 3 从Github上
  • 华为OD机试真题2022(JavaScript)

    华为OD机试真题题库已换 华为OD机试真题2023 JavaScript 本栏有100 道算法题 并提供正确解法 JavaScript 和解题思路 保证都是华为机试真题 非练习题 大概率会考到原题 大家有什么问题可以留言探讨和交流 华为机试
  • Tomcat 系统架构与设计模式之工作原理篇

    本文以 Tomcat 5 为基础 也兼顾最新的 Tomcat 6 和 Tomcat 4 Tomcat 的基本设计思路和架构是具有一定连续性的 Tomcat 总体结构 Tomcat 的结构很复杂 但是 Tomcat 也非常的模块化 找到了 T
  • MySQL 5.5.62下载、安装与卸载详细步骤

    目录 下载地址 安装过程 测试安装 卸载过程 下载地址 安装包我传到了CSDN 下载不需要积分 是从官网下载上传的 可以放心使用 CSDN下载地址 mysql 5 5 62 winx64 msi 官网下载地址 地址 安装过程 双击安装包打开
  • 计算机网络笔记Part2 物理层(Physical Layer)

    计算机网络笔记Part2 物理层 Physical Layer 一 物理层基本概念 二 数据通信 1 一个数据通信例子 2 相关术语 3 三种通讯方式 4 两种数据传输方式 5 码元 Symbol 波特 Baud 速率 带宽 Band Wi
  • 创建自定义的archetype(项目模板)

    一 archetype简介 Archetype是一个Maven项目的模板工具包 它定义了一类项目的基本架构 Archetype为开发人员提供了创建Maven项目的模板 同时它也可以根据已有的Maven项目生成参数化的模板 通过archety
  • G1垃圾回收器简介及回收过程

    一 什么是G1 同CMS一样 G1也是关注停顿时间 不过它是可控的 它被设计用来取代CMS 因为它是空间整理所以没有CMS那么严重的空间碎片问题 同时提供可控的停顿时间 特性 1 G1不同于之前的那些垃圾收集器分为连续的年轻代 老年代和永久
  • leetcode-跳跃游戏系列

    1 跳跃游戏 leetcode 55 跳跃游戏 1 问题描述 给定一个非负整数数组 n u m s nums nums 你最初位于数组的 第一个下标 数组中的每个元素代表你在该位置可以跳跃的最大长度 判断你是否能够到达最后一个下标 示例 1
  • Python-抓取小红书文章的心路历程

    在这之前从未了解过小红书 然后习惯性地百度了一下 发现是这样的 研究发现 这玩意没有pc端的接口 也就是说没办法直接从pc端抓取数据 好吧 放弃 不过pc端还是有用处的 打开社区精选 点开几个推送详情页看了看 发现所有的文章url都是htt
  • form表单中使用fileUpLoad上传文件

    在最近的项目中 需要对用户的头像就行上传 这里了解到使用appche的 大家可自行到mvn库搜索jar包名进行下载 这里需要注意的是代码中对参数的读取 正常情况下我么使用getparameter方法进行读取表单数据 但是因为在form中我们