zoukankan      html  css  js  c++  java
  • springmvc传多个文件到后台,文件包含id和url.

    jsp页面:
    粉紫色区域实现了图片上传以后立刻回显。当选择图片以后,点击系统自带的打开按钮,就实现了文件上传和回显。
    因为要传每张图片的id和url到后台,所以在jsp中用name属性规定一个了名字,如下边绿色区域。
    <div class="dislpayArrow hidden-xs"><a class="pngfix" href="javascript:void(0);" onClick="displaynavbar(this)"></a></div>
    <section class="Hui-article-box section_box">
     <form id="commit" action="<%=request.getContextPath()%>/turnimghome/updateMipCarouselList.do?PositionId=<%=request.getParameter("carouselPositionId")%>" method="post">
            <div class="row cl ml-30 add">
               <div class="turnImgWrap col-sm-9 ml-10" ondrop="drop(event,this)" ondragover="allowDrop(event)" draggable="true" ondragstart="drag(event, this)">
                    <div class="col-xs-12 col-sm-6 col-md-5 col-lg-4 text-c">
                        <div class="img">
                            <span class="addimg">+</span>
                             <input type="hidden" name="pictureId"/>
                        </div>
                    </div>
                    <div class="col-xs-12 col-sm-6 col-md-7 col-lg-6">
                        <p class="lianjie">链接:<input type="text" class="int-text" name="url" placeholder="请输入链接" ></p>
                        <!-- <p class="mt-30">标题:<input type="text" class="int-text" placeholder="请输入标题"></p> -->
                    </div>
                    <div style="clear: both"></div>
                    <button class="btn btn-danger-outline delAll"><i class="Hui-iconfont">&#xe6e2;</i>删除</button>
                </div> 
                 <c:forEach items="${mipCarousel}" var="cas" varStatus="status">
    <div class="turnImgWrap col-sm-9 ml-10" ondrop="drop(event,this)" ondragover="allowDrop(event)" draggable="true" ondragstart="drag(event, this)">
                    <div class="col-xs-12 col-sm-6 col-md-5 col-lg-4 text-c">
                        <div class="img">
                            <span><img src="${cas.id}"></span>
                            <input type="hidden" name="pictureId" value="${cas.pictureid}">
                        </div>
                    </div>
                    <div class="col-xs-12 col-sm-6 col-md-7 col-lg-6">
                        <p class="lianjie">链接:<input type="text" class="int-text" name="url" placeholder="请输入链接" value="${cas.url}"></p>
                        <!-- <p class='mt-30'>标题:<input type="text" class="int-text" placeholder="请输入标题"></p> -->
                    </div>
                    <div style="clear: both"></div>
                    <button class="btn btn-danger-outline delAll"><i class="Hui-iconfont">&#xe6e2;</i>删除</button>
            
                </div> 
    </c:forEach>  
            </div>
        <div class="ml-30 mt-30">
            <button class="btn btn-danger ml-30" id="addNew">新增</button>
            <input type="submit" class="btn btn-success ml-30" id="submit" value="提交">
        </div>
        </form>
        <form id="upload" style="position:absolute;z-index:-1;opacity:0;">
        <input id="file" type="file" name="file">
        </form>
    </section>
    <script type="text/javascript">
    //不允许都删除,至少上传一张图片
    $(function(){
    $("#submit").click(function(){
    if($("#commit").serialize().length==0){
    layer.msg('[ERROR]至少得有一张图片', {icon: 2});
    return false;
    }
     
    });
    });
        //点击新增按钮
        $("#addNew").on("click",function(){
            $(".add").append('<div class="turnImgWrap col-sm-9 ml-10"  ondrop="drop(event,this)" ondragover="allowDrop(event)" draggable="true" ondragstart="drag(event, this)"> ' +
                            ' <div class="col-xs-12 col-sm-6 col-md-5 col-lg-4 text-c">' +
                                '<div class="img">'+
                                    '<span>+</span>' +
                                    '<input type="hidden" name="pictureId"/>'+
                                '</div>' +
                           '</div>' +
                            '     <div class="col-xs-12 col-sm-6 col-md-7 col-lg-6">' +
                                '<p class="lianjie">链接:<input type="text" class="int-text" name="url" placeholder="请输入链接"></p>' +
    //                            '<p class="mt-30">标题:<input type="text" class="int-text"></p>' +
                            '</div>' +
                            '<div style="clear: both"></div>' +
                            '<button class="btn btn-danger-outline delAll" id="del"><i class="Hui-iconfont">&#xe6e2;</i>删除</button>' +
                    '</div>'
            );
            return false;
        });
     
        //点击删除按钮
        $(".add").delegate("button","click",function(){
            $(this).parent(".turnImgWrap").remove();
        });
     
        //进行拖拽
        function allowDrop(ev)
        {
            ev.preventDefault();
        }
     
        var srcdiv = null;
        function drag(ev,divdom)
        {
            srcdiv=divdom;
            ev.dataTransfer.setData("text/html",divdom.innerHTML);
        }
     
        function drop(ev,divdom)
        {
            ev.preventDefault();
            if(srcdiv != divdom){
                srcdiv.innerHTML = divdom.innerHTML;
                divdom.innerHTML=ev.dataTransfer.getData("text/html");
            }
        }
        
        var that;
        $(".add").delegate(".img","click",function(){
         that=$(this);
         $("#file").click();
         return false;
        });
        //图片上传并回显
        $("#file").change(function(){
         var formData = new FormData($("#upload")[0]);
         $.ajax({
         url : "<%=request.getContextPath() %>/file/uploadPicture.do?typeId=10&objectId=",
    type : "post",
    data :  formData,
    dataType:"json",
    async: false,  
               cache: false,  
               contentType: false,  
               processData: false,  
                success: function(data){
                 $(that).find("span").html("<img src="+data.url+">");
             $(that).find("input").val(data.picId);//.attr("name","'+data.picId+'")
    //             var a=$(that).next("input[name='file']")[0].files[0];//$("input[name='file']")[0].files[0];
    //             var b = new FileReader();
    //             b.readAsDataURL(a);
    //             b.onload=function(){
                 /* $("input[name='pictureId']")[0].value=data.picId; */
    //             } 
                   layer.msg('[OK]上传成功', {icon: 1});
                }
            });
        });
    </script>
    </body>
    </html>
     
    后台接收多条id和url时,要用String[] 
    /** 
     *提交上传的图片
     * @throws IOException 
     */
    @RequestMapping("updateMipCarouselList")
    @AuthPassport(authority="common")
    public String updateMipCarouselList(@RequestParam String PositionId,@RequestParam("pictureId") String[] pictureId,@RequestParam("url") String[] url) throws MyException, IOException{
    //清空表中相关数据
    String sql = "delete from mip_carousel where carousel_position_id ='"+PositionId+"' and status = 1";
    carouselService.deleteBySql(sql);
    MipCarousel carousel = new MipCarousel();
    //排除前台传来的数组中有空值
    List<String> picList = new ArrayList<String>();
    List<String> urlList = new ArrayList<String>();
    for(int j=0;j< pictureId.length;j++){
    if(pictureId[j]!=null && pictureId[j].length()!=0){
    picList.add(pictureId[j]);
    urlList.add(url[j]);
    }
    }
     //插入前台提交数据
     if(picList.size() > 0){
     int size = picList.size();
     for(int i =0;i<size;i++){
      carousel.setPictureid(picList.get(i));
      if(urlList.get(i) != null&& urlList.get(i).length()!=0) 
      carousel.setUrl(urlList.get(i));
      else
      carousel.setUrl(" ");
    carousel.setSequence(size-i);
    carousel.setCarouselPositionId(PositionId);
    carousel.setTitle(" ");
    User user = userService.get(Tools.getUser().getId());
    carousel.setUid(user.getId());
    carousel.setStatus((byte) 1);;
    carouselService.save(carousel);
    //更改picture表的id
    String sqlByurl = "from Picture where id = '"+picList.get(i)+"' and status = 1";
    Picture picture = pictureService.getUrl(sqlByurl);
    //生成缩略图640x360
    // 获取新主图存放路径
    String urlslt = picture.getUrl();
    String rootPath = config.getRootPath();
    String imagePath = rootPath + urlslt;
    // 设置缩略图的存放路径路径
    int lastIndexOf = urlslt.lastIndexOf("/");
    String substring = urlslt.substring(0, lastIndexOf);
    String imageName = urlslt.substring(lastIndexOf + 1);
     
    // 轮播图详情页大图C1(1200*453)
    String thumbUrl1 = substring + "/640x360_" + imageName;
    String thumbnailPath1 = rootPath + thumbUrl1;
    // 生成缩略图
    Map<String, Integer> thumb1 = ImageHepler.createThumbs(imagePath, thumbnailPath1, 640, 360);
    picture.setThumb1(thumbUrl1);
    picture.setThumb1Width(thumb1.get("width"));
    picture.setThumb1Height(thumb1.get("height"));
    picture.setObjectId(picList.get(i));
    pictureService.update(picture);
    }
     }
    return "redirect:/turnimghome/getMipCarouselList.do?carouselPositionId="+PositionId;
    }
    上传文件代码如下:
    @RequestMapping(value = "/file/uploadPicture.do")
    @ResponseBody
    public String uploadPicture(@RequestParam(value = "file", required = false) CommonsMultipartFile file,
    String objectId, String typeId, @RequestParam(defaultValue = "") String callBack, String property,
    HttpServletRequest request) {
     
    String result = "";
    String realFileName = file.getOriginalFilename();
    // String destDir = Tools.getServicePath(request);
    String destDir = config.getRootPath();
    String saveUrl = "";
    String suffix = realFileName.substring(realFileName.lastIndexOf(".") + 1).toUpperCase();
    JSONObject obj = new JSONObject();
     
    /**
     * 文件大小拦截,不能超过20M
     */
    if (file.getSize() > 20 * 1024 * 1024 * config.getFileSize()) {
    obj.put("error", 1);
    result = "[ERROR]文件超过最大限制,请上传小于" + (20 * config.getFileSize()) + "M的文件";
    } else if (config.getImageType().indexOf(suffix) < 0 && config.getFileType().indexOf(suffix) < 0) {
    // 检查扩展名
    obj.put("error", 1);
    result = "[ERROR]上传文件格式不对";
    } else {
    // 检查扩展名
    if (config.getImageType().indexOf(suffix) >= 0) {
    saveUrl += "back/picture";
    } else {
    saveUrl += "back/picture";
    }
     
    String targetFileName = UUID.randomUUID().toString().replace("-", "") + "." + suffix;
    // 保存图片
    try {
    if (!new File(destDir + saveUrl).exists()) {
    new File(destDir + saveUrl).mkdirs();
    }
    File targetFile = new File(destDir + saveUrl, targetFileName);
    file.transferTo(targetFile);
     
    Picture picture = new Picture();
     
    // 存数据库
    picture.setObjectId(objectId);
    picture.setTypeId(typeId);
    picture.setName(realFileName);
    picture.setUrl(saveUrl + "/" + targetFileName);
    picture.setType((byte) 1);
    picture.setStatus((byte) 1);
    picture.setIsMain((byte) 1);
    // 获取原图真实长宽
    BufferedImage sourceImg = ImageIO.read(new FileInputStream(targetFile));
    picture.setPicWidth(sourceImg.getWidth());
    picture.setPicHeight(sourceImg.getHeight());
    Picture savePic = pictureService.save(picture);
    String picId = savePic.getId();
    String picName = savePic.getName();
    result = config.getRootUrl() + saveUrl + "/" + targetFileName;
    obj.put("error", 0);
    obj.put("state", "SUCCESS");
    obj.put("url", result);
    obj.put("picId", picId);
    obj.put("picName", picName);
    } catch (Exception e) {
    obj.put("error", 1);
    e.printStackTrace();
    result = "[ERROR]上传失败";
    }
     
    }
    if (!callBack.equals("")) {
    if (result.indexOf("[ERROR]") < 0) {
    // printMsg("<script>parent." + callBack + "('[OK]上传成功','" + result + "','" + property + "')</script>");
    } else {
    // printMsg("<script>parent.uploadImgCallBack('[ERROR]上传失败','" + result + "')</script>");
    }
    } else {
    obj.put("message", result);
    // printMsg(obj.toString());
    }
    return obj.toString();
    }
  • 相关阅读:
    git命令评测
    so文件成品评论【整理】
    Codeforces 85B. Embassy Queue【段树、馋】
    JPEG图像扩展信息读取和修改
    【 D3.js 入门系列 --- 0 】 简介及安装
    unity3d 学习笔记(三)
    ListView 泛利
    [React] Create an Auto Resizing Virtualized List with react-virtualized
    [PReact] Integrate Redux with Preact
    [Preact] Integrate react-router with Preact
  • 原文地址:https://www.cnblogs.com/maoyizhimi/p/6676914.html
Copyright © 2011-2022 走看看