zoukankan      html  css  js  c++  java
  • ssm+ajax+mysql带图片表单上传(路径上传)

    废话不多直接上代码

    • html页面以及js
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <base href="${ctx}">
    <!-- 下拉框 -->
    <%@ include file="../top.jsp"%>
    <style type="text/css">
       code {
          background-color: #f5f5f5;
       }
       .profile-info-name,.profile-info-value{
           height: 44px
       }
       .profile-info-value{
               padding-top: 6px
       }
       .profile-info-name{
               width:100px;
       }
    </style>
    </head>
    
    <body class="no-skin" style="margin: 0;padding: 0">
    <div id="main" class="main-container ace-save-state" >
    
        <div class="row" style="padding-top: 10px">
            <div class="col-xs-12">
                <form class="form-horizontal" role="form" method="post" id="addPersionForm" enctype="multipart/form-data">
                    <div class="profile-user-info profile-user-info-striped" style="border-bottom: 0px">
                        <div style="500px"> 
                            <div class="profile-info-row" >
                                <div class="profile-info-name"> 姓名 </div>
                                <div class="profile-info-value" style="388px">
                                    <input type="text" placeholder="汉字" name="persion_name" style=" 210px" />
                                </div>
                            </div>
        
                            <div class="profile-info-row">
                                <div class="profile-info-name"> 性别 </div>
        
                                <div class="profile-info-value">
                                    <div class="radio">
                                        <label>
                                            <input name="persion_sex" checked="checked" type="radio" class="ace" value="男"/>
                                            <span class="lbl"></span>
                                        </label>
                                    
                                        <label style="margin-left: 20px">
                                            <input name="persion_sex" type="radio" class="ace" value="女"/>
                                            <span class="lbl"></span>
                                        </label>
                                    </div>
                                </div>
                            </div>
        
                            <div class="profile-info-row">
                                <div class="profile-info-name"> 身份证号 </div>
        
                                <div class="profile-info-value">
                                    <input type="text" placeholder="不少于13位" style=" 210px" name="persion_id_card"/>
                                </div>
                            </div>
                            
                            <div class="profile-info-row">
                                <div class="profile-info-name"> 手机号 </div>
                                <div class="profile-info-value">
                                    <input type="text" placeholder="11位手机号" style=" 210px" name="persion_phone"/>
                                </div>
                            </div>
    
                            
            <div class="fitem">  
                <label>头像:</label>  
                <input id="codeUrl" name="codeUrl" accept="image/*" onchange="onupload(this)" type="file" style="200px" />  
                <div id="xmTanDiv" style="text-align:center;">  
                    <img id="Img" width="180px" height="180px"/>  
                </div>  
            </div>  
    
                        </div>
                    </div>
                        
                    <div class="profile-user-info profile-user-info-striped" style="margin-top: 1px">
    
                        <div class="profile-info-row">
                            <div class="profile-info-name"> 部门名称 </div>
    
                            <div class="profile-info-value">
                                <input type="text" placeholder="部门名称" style=" 210px" name="persion_dname" />
                            </div>
                        </div>
    
                        <div class="profile-info-row">
                            <div class="profile-info-name"> 家庭住址 </div>
    
                            <div class="profile-info-value">
                                <input type="text" placeholder="家庭住址" style=" 210px" name="persion_address" />
                            </div>
                        </div>
    
                        <div class="profile-info-row">
                            <div class="profile-info-name"> 单位代码 </div>
    
                            <div class="profile-info-value">
                                <select class="chosen-select" data-placeholder="Choose a Country..." style=" 210px" name="unit_code">
                                    <option selected="selected" value="-1">----请选择单位----</option>
                                    <c:forEach items="${ulist}" var="u" varStatus="vs" >
                                        <option value="${u.unit_code}">${u.unit_name}</option>
                                    </c:forEach>
                                </select>
                            </div>
                        </div>
                    </div>
                    </form>
                </div>
            </div>
        </div>
        
        
        <div class="footer">
            <div class="footer-inner">
                <div class="footer-content" style="text-align: right;">
                    <button type="button" class="btn btn-danger" onclick="add();" style="margin-right: 15px">确定</button>
                    <button type="button" onclick="top.Dialog.close();" style="margin-right: 2px" class="btn" >取消</button>
                </div>
            </div>
        </div>
        
        
    
    <script type="text/javascript" src="static/js/jquery-1.7.2.js"></script>
    
    </body>
         <script type="text/javascript">
             var editor;
            $(function() {
                var width = $(window).width();
                var height = $(window).height();
                $("#main").css("width",width-2);
                $("#main").css("height",height-75);
            });
            function add(){
                var formdata = new FormData($("#addPersionForm")[0]);
                $.ajax({
                    url:"<%=request.getContextPath()%>/persion/addPersion.do",
                    type:"POST",
                    async: false,
                    contentType: false,  
                    processData: false,
                    cache: false,
                    data:formdata,
                    dataType:"text",
                    success:function(){
                        //关闭弹出框
                        top.Dialog.close();
                        //刷新数据表格
                        $("#main-container").datagrid("reload");
                    },
                    error:function(){
                        top.Dialog.close();
                        alert("新增失败");
                    },
                })
            } 
     
    //选择图片,马上预览  
     var image = '';  
     function onupload(file) {  
         if(!file.files || !file.files[0]){  
         return;  
         }  
         var reader = new FileReader();  
         //读取文件过程方法  
         reader.onload = function (e) {  
             document.getElementById('Img').src = e.target.result;  
             image = e.target.result;  
         }  
         reader.readAsDataURL(file.files[0])  
     }  
            </script>
    </html>
    • controller
       /**
         * 
            * @Title: addPersion  
            * @Description: TODO(新增方法)  
            * @param @param upersion
            * @param @param request
            * @param @param response    参数  
            * @return void    返回类型  
            * @throws
         */
            @RequestMapping(value = "/addPersion")
            public void addPersion(HttpServletRequest request){
                try {
                    UPersion upersion = new UPersion();
                    //解析请求中的数据  
                   MultipartHttpServletRequest mpRequest = (MultipartHttpServletRequest) request;
                   
                   String persion_name = mpRequest.getParameter("persion_name");
                   String persion_sex = mpRequest.getParameter("persion_sex");
                   String persion_id_card = mpRequest.getParameter("persion_id_card");
                   String persion_phone = mpRequest.getParameter("persion_phone");
                   String persion_dname = mpRequest.getParameter("persion_dname");
                   String persion_address = mpRequest.getParameter("persion_address");
                   String unit_code = mpRequest.getParameter("unit_code");
                   
                   //解析图片相对路径
                   MultipartFile file = mpRequest.getFile("codeUrl");
                   //图片存放在项目的位置
                   String path = request.getSession().getServletContext().getRealPath("static\images");
                   System.out.println(path);
                   String imageUrl = UploadUtil.uploadFile(file, path);  
                   
                   upersion.setPersion_name(persion_name);
                   upersion.setPersion_sex(persion_sex);
                   upersion.setPersion_id_card(persion_id_card);
                   upersion.setPersion_phone(persion_phone);
                   upersion.setPersion_dname(persion_dname);
                   upersion.setPersion_address(persion_address);
                   upersion.setUnit_code(unit_code);
                   upersion.setPersion_image(path+"\"+imageUrl);
                   System.out.println(path+imageUrl);
                   persionService.addPersion(upersion);
                   
                   System.out.println("新增成功");
                    
                } catch (Exception e) {
                  e.printStackTrace();
                }
                
            }
    • mapper
         <insert id="addPersion" parameterType="com.zkzj.video_ms.model.UPersion">
              insert into u_persion (persion_name, persion_sex, 
              persion_id_card, unit_code, persion_dname, persion_address, 
              persion_phone,persion_photo,persion_image) 
              values (#{persion_name}, #{persion_sex}, 
              #{persion_id_card}, #{unit_code}, #{persion_dname}, #{persion_address}, #{persion_phone}, #{persion_photo}, #{persion_image}) 
         </insert>
    • 工具类UploadUtil
    package com.zkzj.video_ms.utils;
    
    import java.io.File;
    import java.io.IOException;
    import java.util.Random;
    
    import org.springframework.web.multipart.MultipartFile;
    
    public class UploadUtil {
        
        public static String uploadFile(MultipartFile file, String path) throws IOException{
            //上传文件的真实名称
            String name = file.getOriginalFilename();
            /*System.out.println(name);*/
            //获取后缀名
            String suffixName = name.substring(name.lastIndexOf("."));
            /*System.out.println(suffixName);*/
            //自定义随机数
            String hash = Integer.toHexString(new Random().nextInt());
            /*System.out.println(hash);*/
            //新文件名字
            String fileName = hash + suffixName;
            /*System.out.println(fileName);*/
            
            File tempFile = new File(path,fileName);
            if(!tempFile.getParentFile().exists()){
                tempFile.getParentFile().mkdir();
            }   
            if(tempFile.exists()){
                tempFile.delete();
            }
            tempFile.createNewFile();
            file.transferTo(tempFile);
            return tempFile.getName();
        }
    
    }
  • 相关阅读:
    221. 最大正方形
    9. 回文数
    2. 两数相加
    1. 两数之和
    HDU 1864 最大报销额
    47 java包打成本地maven
    46 数组中的元素进行位置交换
    5 docker安装kibana
    45 vue图片放大预览
    4 docker中安装es
  • 原文地址:https://www.cnblogs.com/ITzhangda/p/9100389.html
Copyright © 2011-2022 走看看