easyui 表单提交与图片上传,图片添加、删除

提交表单和图片是web中经常要用到的。我这里用easyui做了一个表单,里面可以上传多张图片,并且可以进行新增和删除。

 

前端代码如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <script src="js/easyui-1.5.1/jquery.min.js"></script>
        <script src="js/easyui-1.5.1/jquery.easyui.min.js"></script>
        <script src="js/easyui-1.5.1/locale/easyui-lang-zh_CN.js"></script>
        <link href="js/easyui-1.5.1/themes/default/easyui.css" rel="stylesheet" />
        <link href="js/easyui-1.5.1/themes/icon.css" rel="stylesheet" />
        <link rel="stylesheet" href="iconfont/iconfont.css">
        <style>
            *{
                margin: 0px;
                padding: 0px;
            }
            
            li{
                list-style: none;
            }
            .job_title{
                position:relative;
                width: 600px;
                text-align: center;
                margin: 20px auto;
                margin-bottom: 0px;
            }
            
            .job_title a{
                position: absolute;
                right: 0px;
                
            }
            #jobForm{
                width: 600px;
                height: 620px;
                border: 1px solid black;
                margin: 10px auto;
            }
            .personInfoWithPhoto{
                width: 100%;
                height: 200px;
            }
            .personInfoWithPhoto .personInfo_top{
                width: 448px;
                float: left;
            
            }
            .personInfoWithPhoto .photo{
                position: relative;
                float: right;
                width: 150px;
                height: 200px;
                border-bottom: 1px solid black;
            }
            
            .personInfo_top .row{
                width: 100%;
                height: 50px;
                border-bottom: 1px solid black;
                
            }
            .personInfo_top .cell{
                float: left;
                width: 50%;
                height: 50px;
                line-height: 50px;
                border-right: 1px solid black;
            
            }
            .personInfo_top .cell label{
                margin: 0px 10px;
            }
            .personInfoWithoutPhoto{
                height: 100px;
            }
            .personInfoWithoutPhoto .row{
                width: 100%;
                height: 50px;
                border-bottom: 1px solid black;
            }
            .personInfoWithoutPhoto .cell{
                float: left;
                width: 50%;
                height: 50px;
                line-height: 50px;
            }
            .personInfoWithoutPhoto .row .cell:first-child{
                border-right: 1px solid black;
            }
            
            .personInfoWithoutPhoto .cell label{
                margin: 0px 10px;
            }
            .profile{
                height: 130px;
                border-bottom: 1px solid black;
            }
            .profile textarea{
                padding-top: 5px;
                text-indent: 2em;
                width: 100%;
                height: 100%;
                resize: none;
                border: 0px;
                outline: none;
            }
            .certificates{
                height: 190px;
                padding: 10px 30px;
            }
            
            .certificates div{
                position: relative;
                margin-right: 29px;
                
                display: inline-block;
                border: 1px dashed black;
                height: 80px;
                width: 80px;
                text-align: center;
                
                
            }
            .certificates div:first-child{
                
                margin-bottom:10px;
            }
            
            .certificates div:nth-child(5n){
                margin-right: 0px;
            }
        
            
            .photo .icon-guanbi{
                position: absolute;
                top: 5px;
                right: 5px;
                display: none;
            }
            
            
            .photo span{
                position: absolute;
                display: inline-block;
                width: 30px;
                height: 90px;
                text-align: center;
                top: 100px;
                left: 75px;
                margin-top: -45px;
                margin-left: -15px;
                border: 1px dashed black;
            }
            
            .photo img{
                width: 150px;
                height: 200px;
            }
            .certificates{
                position: relative;
            }
            .certificates div .icon-guanbi{
                position: absolute;
                top: 5px;
                right: 5px;
                display: none;
            }
            
            .certificates  div img{
                display: none;
                width: 78px;
                height: 78px;
                vertical-align: top;    
            }
            
            
            .submit_btn{
                width: 120px;
                height: 30px;
                background: orange;
                border-radius: 20px;
                margin: 0px auto;
                color: #fff;
                text-align: center;
                line-height: 30px;
            }
        </style>
        
    </head>
    <body>
        <div class="job_title">
            <span>申请表</span>
        </div>
        <form id="jobForm">
            <div class="personInfoWithPhoto">
                <div class="personInfo_top">
                    <div class="row">
                        <div class="cell">
                            <label>姓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名</label>
                            <input class="easyui-textbox" name="name" style="height: 30px;width:120px;" data-options="required:true,validType:'checkBlank'"/>
                        </div>
                        <div class="cell">
                            <label>性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别</label>
                            <input type="radio" name="sex" value="男" checked="checked" />男
                            <input type="radio" name="sex" value="女" style="margin-left: 5px;"/>女
                        </div>
                    </div>
                    <div class="row">
                        <div class="cell">
                            <label>民&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;族</label>
                            <input class="easyui-combobox" type="text" name="native"
                               data-options="valueField:'id', textField:'text', required: true, editable:false, panelHeight:'200',
                               data:DataSource.queryDict('native')" value="0" style="height: 30px;width: 120px;"
                            />
                        </div>
                        <div class="cell">
                            <label>出生年月</label>
                            <input class="easyui-datebox" type="text" name="birthday" data-options="editable:false" style="height:30px;width: 120px;"/>
                        </div>
                    </div>
                    <div class="row">
                        <div class="cell">
                            <label>政治面貌</label>
                            <input class="easyui-combobox" type="text" name="zzmm"
                               data-options="valueField:'id', textField:'text', required: true, editable:false, panelHeight:'200',
                               data:DataSource.queryDict('zzmm')" value="0" style="height: 30px;width:120px;"
                            />
                        </div>
                        <div class="cell">
                            <label>籍&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;贯</label>
                            <input class="easyui-combotree" type="text" name="jg"
                               data-options="valueField:'id', textField:'text', required: true, editable:false, panelHeight:'200',
                               data:DataSource.queryDict('jg')" value="11" style="height: 30px;width:120px;"
                            />
                            
                        </div>
                    </div>
                    <div class="row">
                        <div class="cell">
                            <label>专&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;业</label>
                            <input class="easyui-textbox" name="major" style="height: 30px;width:120px;" data-options="required:true,validType:'checkBlank'"/>
                        </div>
                        <div class="cell">
                            <label>毕业院校</label>
                            <input class="easyui-textbox" name="school" style="height: 30px;width:120px;" data-options="required:true,validType:'checkBlank'"/>
                        </div>
                    </div>
                    
                </div>
                <div id="photo" class="photo" οnclick="photoMgr.uploadPhoto()">
                    <i  class="iconfont icon-guanbi"  οnclick="photoMgr.delPhoto()"></i>
                    <span id="upload">上传照片</span>
                    <img id="person_img"/>
                </div>
                
            </div>
            <div class="personInfoWithoutPhoto">
                <div class="row">
                    <div class="cell">
                        <label>身份证号</label>
                        <input class="easyui-textbox" name="idcard" style="height: 30px;width:200px" data-options="required:true,validType:'idcard'"/>
                    </div>
                    <div class="cell">
                        <label>手机号码</label>
                        <input class="easyui-textbox" name="tel" style="height: 30px;width:200px" data-options="required:true,validType:'mobile'"/>
                    </div>
                </div>
                <div class="row">
                    <div class="cell">
                        <label>邮箱地址</label>
                        <input class="easyui-textbox" name="email" style="height: 30px;width:200px" data-options="required:true,validType:'email'"/>
                    </div>
                    <div class="cell">
                        <label>家庭地址</label>
                        <input class="easyui-textbox" name="address" style="height: 30px;width:200px" data-options="required:true,validType:'checkBlank'"/>
                    </div>
                </div>
            </div>
            
            <div class="profile">
                <textarea id="" name="profile"  placeholder="请输入社会实践经验"></textarea>
            </div>
            <div  class="certificates" id="cert_list">
                    <div οnclick="certiMgr.uploadPhoto(this)">
                        <img src="tree/image/add.png" style="display: inline-block;"/>
                        <img />
                        <i  class="iconfont icon-guanbi"  οnclick="certiMgr.delPhoto(this)"></i>
                    </div>
            </div>
        </form>
        <div id="submitBtn" class="submit_btn">提交申请</div>
        <div id="file_ul">
            <input type="file" name="file_0" accept="image/gif,image/jpeg,image/jpg,image/png,image/svg" style="display:none" οnchange="photoMgr.browseFile(this)"/>
            
        </div>        
    </body>
    <script src="js/data.js"></script>
    <script src="js/form.js"></script>
    <script src="js/validate.js"></script>
</html>

后端 代码:

@ResponseBody
    @RequestMapping("/saveJobInfo.do")
    public Response saveJobInfo(@RequestParam(required=false,value="file") CommonsMultipartFile[] files, HttpServletRequest request,HttpServletResponse resp)  {
        try {
            resp.setHeader("Access-Control-Allow-Origin", "*");
            System.out.println("11");
            Map<String, Object> params = getParams(request);
            Response status=new Response(false,"保存成功");
            if(files!=null && files.length>0){
                for(int i=0;i<files.length;i++){
                     if(files[i] != null && files[i].getSize() > 0){
                        byte[] photo = files[i].getBytes();        
                         params.put("file_"+i, photo);
                     }
                }
            }
            jobService.insertJob(params);
            return new Response(true, "保存成功");
        } catch (Exception e) {
            e.printStackTrace();
            return new Response(false, "保存失败");

        }
        
    }

数据库存储:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/254640.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

社会化媒体营销方案简介

最近公司经营走到了死胡同里面&#xff0c;就开始研究运营的营销方案&#xff0c;发现有很多的IT公司都在走社会化营销&#xff0c;感觉这会是以后每个公司都会用到的一种营销策略&#xff01;社会化媒体营销-亦称社会化营销&#xff0c;是利用社会化网络&#xff0c;在线社区&…

神经网络提取图片特征,神经网络算法识别图像

如何用Python和深度神经网络寻找相似图像 代码首先&#xff0c;读入TuriCreate软件包import turicreate as tc我们指定图像所在的文件夹image&#xff0c;让TuriCreate读取所有的图像文件&#xff0c;并且存储到data数据框data tc.image_analysis.load_images(./image/)我们来…

发一张你认为很漂亮的美女照片?

顾锦盒 &#xff0c;INFP, 4w5 565 人赞同 谢谢大家的赞。更新几张。 春风再美也比不过你的笑。 编辑于 2016-04-11 75 条评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利 201赞同 反对&#xff0c;不会显示你的姓名 吴名士 &#xff0c;公众号&#xf…

机器学习在社会科学中的应用

本文把目前机器学习技术在社会科学研究中的应用分成三类&#xff1a;第一&#xff0c;数据生成&#xff08;Data Generating Process&#xff09;&#xff1a;机器学习可以帮助学者获得以前很难或无法获得的数据&#xff1b;第二&#xff0c;预测&#xff08;Prediction&#x…

[RUST/腐蚀]Windows-开服服务端下载以及配置

一、前置要求 1.SteamCMD&#xff1a;SteamCMD - Valve Developer Communityhttps://developer.valvesoftware.com/wiki/SteamCMD 2.通过SteamCMD下载RUST/腐蚀服务端。 二、SteamCMD 注意&#xff1a;所有目录均应避免出现中文。 1.建立SteamCMD文件夹&#xff0c;如 D:\st…

chatgpt赋能python:Python中的_--了解这个神秘的下划线

Python中的_ – 了解这个神秘的下划线 Python是一种流行的编程语言&#xff0c;它具有简单易学的语法和强大的功能。一些Python的特殊语法经常会让初学者感到困惑。其中&#xff0c;一个神秘的下划线符号在Python中出现的频率非常高&#xff0c;而且它的含义和使用也非常多样化…

查看MySQL服务器是否启用了SSL连接,并且查看ssl证书是否存在

文章目录 一、查看MySQL服务器是否启用了SSL连接 1.登录MySQL服务器 2.查看SSL配置 二、查看证书是否存在 前言 查看MySQL服务器是否启用了SSL连接&#xff0c;并且查看ssl证书是否存在 一、查看MySQL服务器是否启用了SSL连接 1.登录MySQL服务器 在Linux终端中&#xf…

python向上取整_python向上取整

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! import math f = 11.2print math.ceil(f) #向上取整print math.floor(f)#向下取整print round(f) #四舍五入 #这三个函数的返回结果都是浮点型... python中向上…

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现SSA-CNN-GRU麻雀算法优化卷积门控循环单元多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-GRU麻雀算法优…

YouTube如何生成双语字幕?

安装YouTube的双语字幕插件即可。Dualsub 到这个网站下载即可&#xff1a; https://chromecj.com/accessibility/2019-08/2848.html&#xff0c;之后简单设置一下就可以实现双语字幕的效果了。

宝藏字幕软件 | PotPlayer

建议用potplayer&#xff0c;字幕和视频放在同一个文件夹&#xff0c;和视频一个名字&#xff08;不包括后缀名&#xff09;&#xff0c;双击视频就自动加载字幕了 起初用电脑自带的视频播放器&#xff0c;导入的字幕为透明色&#xff0c;根本看不清楚&#xff0c;于是我一顿狂…

视频如何加字幕?视频加字幕方法分享!​

视频如何加字幕&#xff1f;在今天的教程中&#xff0c;我们将会学习如何给你的视频添加字幕。字幕是一个非常重要的元素&#xff0c;它不仅可以帮助听力受损或语言障碍的人士理解内容&#xff0c;还可以让你的视频更加易于理解和吸引观众。在本文中&#xff0c;我们将会介绍几…

Youtube——如何将视频中的英文字幕转换成中文字幕

Youtube——如何将视频中的英文字幕转换成中文字幕 1、正常的英文字幕2、点击右下角的设置-Subtitles/CC(2)3、点击Auto-translate4、选择Chinese(Simplified)&#xff0c;此时可以看到已经翻译成中文了 1、正常的英文字幕 2、点击右下角的设置-Subtitles/CC(2) 3、点击Auto-tr…

视频字幕 硬字幕 软字幕 外挂字幕 简介

目录 1.外挂字幕 2.软字幕 3.硬字幕 总结 1.外挂字幕 外挂字幕是一个外部的字幕文件&#xff0c;格式类型一般有srt、vtt、ass等。 播放视频时&#xff0c;把外挂字幕和视频放在同一目录下&#xff0c;并在播放器中选择字幕文件&#xff0c;即可以在视频中看到字幕。 2.软…

制作视频中的字幕很麻烦?一个免费工具帮你搞定!

这段时间在做视频&#xff0c;分享一些制作过程中用到的工具。今天说下如何快速的做字幕。 这个工具是免费的&#xff0c;超级好用。所以其余的不用推荐&#xff0c;直接分享我现在用的就可以了。 网易见外工作台&#xff0c;一个帮你将语音生成字幕的网站&#xff0c;准确率很…

给视频嵌入字幕的神器 MKVToolNix

我们经常会下载一些视频是不带字幕的&#xff0c;也就是俗称的生肉&#xff0c;然后下载一些外挂字幕。其实我们可以自己把字幕压缩进视频里。 我推荐一个&#xff0c;免费开源的给视频加字幕的软件&#xff0c;MKVToolNix. 下载地址&#xff1a;https://www.fosshub.com/MKV…

ChatGPT专业应用:纯英文视频-中英文快速字幕添加

正文共 900字&#xff0c;阅读大约需要 3 分钟 视频翻译、内容制作人群必备技巧&#xff0c;您将在3分钟后获得以下超能力&#xff1a; 1.无需英文基础&#xff0c;纯英文视频翻译 2.中英文转译 Beezy评级 &#xff1a;A级 *经过寻找和一段时间的学习&#xff0c; 一部分人能…

chatgpt赋能python:Python中的乘方计算:介绍和应用

Python中的乘方计算&#xff1a;介绍和应用 乘方是数学运算中的重要部分&#xff0c;表示一个数&#xff08;称为底数&#xff09;被另一个数&#xff08;称为指数&#xff09;乘以若干次。在Python编程中&#xff0c;乘方运算也是非常常见的。本文将为您介绍Python中的乘方计…

C++ list类成员函数介绍

目录 &#x1f914;list模板介绍&#xff1a; &#x1f914;特点&#xff1a; &#x1f914;list内存结构图解&#xff1a; &#x1f914; list的成员函数&#xff1a; &#x1f60a;list构造函数&#xff1a; &#x1f50d;代码示例&#xff1a; &#x1f50d;运行结果&…