之前没接触过这个,现在接手一个二次开发的项目,用到了这个,目前想实现一个显示默认图片,用户不选择就是提交这个图片,用户上传图片可以覆盖这个图片,并且这个图片可以删除。请教下各位,这个应该如何实现呢?下面是部分代码,我没整明白,希望了解的帮帮忙。$("#loading").ajaxStart(function(){
$(this).show();
}).ajaxComplete(function(){
$(this).hide();
});
$.ajaxFileUpload ({ 
async : false,
    url:'${pageContext.request.contextPath}/addImg', //上传文件的服务端 
    secureuri:false, 
    fileElementId:'upFileImg', 
    type: 'POST',
    dataType: 'json', 
    success: function (data, status)
    {
     $("<span id = "+siteSpan+"><input type='hidden' name="+imgAddName[0]+" value="+data.date+" id="+inputNumber+"><img  id="+siteName+" src='allUploadImages/"+data.date+"'><br /><label id="+siteNumber+" class='dele_label' onclick='removeImg(this)'>删除</label></span>").appendTo($("#up_img"));
    }
  });

解决方案 »

  1.   

    就是判断upFileImg是否有值,为空就显示默认,有值就显示。
      

  2.   


    这样好像还是不行,页面什么都没有呢success: function (data, status)
        {
         if(upFileImg==null)
         $("<span id = "+siteSpan+"><input type='hidden' name="+imgAddName[0]+" value="+data.date+" id="+inputNumber+"><img  id="+siteName+" src='images/ka._present.gif'><br /><label id="+siteNumber+" class='dele_label' onclick='removeImg(this)'>删除</label></span>").appendTo($("#up_img"));
         else 
         $("<span id = "+siteSpan+"><input type='hidden' name="+imgAddName[0]+" value="+data.date+" id="+inputNumber+"><img  id="+siteName+" src='allUploadImages/"+data.date+"'><br /><label id="+siteNumber+" class='dele_label' onclick='removeImg(this)'>删除</label></span>").appendTo($("#up_img"));
        }
      

  3.   

    这是回调函数,你要在action里面判断。
      

  4.   


    后台图片处理如下,并没有参数upFileImg啊,这个项目用的是mybatis@RequestMapping(value = "/addImg" , method = RequestMethod.POST)
    @ResponseBody
    public String addImgInformation(HttpServletRequest request, HttpServletResponse response) throws IOException{
    Map<String,String> map = new HashMap<String , String>();
    //转型为MultipartHttpRequest(重点的所在)  
            MultipartHttpServletRequest multipartRequest  =  (MultipartHttpServletRequest) request;  
            //  获得第1张图片(根据前台的name名称得到上传的文件)   
            MultipartFile imgFile  =  multipartRequest.getFile("file");
            
            //保存第一张图片  
            if(!(imgFile.getOriginalFilename() ==null || "".equals(imgFile.getOriginalFilename()))) {  
        String newName = UUID.randomUUID().toString(); 
        String fileName = imgFile.getOriginalFilename();
        String ext = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());  
             //对扩展名进行小写转换  
            ext = ext.toLowerCase(); 
            String outDir = request.getServletContext().getRealPath("/")+"allUploadImages/";
            LOG.debug("==========================================>"+outDir);
             File fileUrl = new File(outDir+newName+"."+ext);
             LOG.debug("==========================================>"+newName+"."+ext);
             imgFile.transferTo(fileUrl);
             return "{date:'"+newName+"."+ext+"'}";
            }else{
             map.put("error","true");
             map.put("date", "保存图片错误");
             return "{date:'sdfs'}";
            }
    }

      

  5.   

    是在这个里面进行判断对么?
    function imgFile(){
    var imageSrc = document.getElementById("imageSelect").value;
    $("#loading").ajaxStart(function(){
    $(this).show();
    }).ajaxComplete(function(){
    $(this).hide();
    });
    }
      

  6.   


    我觉得应该是在下面这段话里显示还没上传时就显示默认图片,对么? $("#loading").ajaxStart(function(){
    $(this).show();
    }).ajaxComplete(function(){
    $(this).hide();
    });
      

  7.   

    为什么这么多html代码都写在js里面...
    应该是这样的逻辑吧,页面上有一个表单域有默认图片地址,有个上传按钮,你点击上传图片成功则更新表单域为新图片地址?
    那你应该在
    success: function (data, status)
                                {
                                    $("<span id = "+siteSpan+"><input type='hidden' name="+imgAddName[0]+" value="+data.date+" id="+inputNumber+"><img  id="+siteName+" src='allUploadImages/"+data.date+"'><br /><label id="+siteNumber+" class='dele_label' onclick='removeImg(this)'>删除</label></span>").appendTo($("#up_img"));
                                }
                              });
    就是这一步,判断上传成功,然后把图片表单域的值修改为你最新上传的图片地址应该就没问题了。你应该在这个方法里判断是否上传成功吧..成功了再修改表单
      

  8.   

    $("#loading").ajaxStart(function(){
    (this).show();   //按理说在开始上传前这里应该显示一张默认图片,但是不值得该怎么让它显示呢?
    }).ajaxComplete(function(){
    $(this).hide();
    });
      

  9.   

    点错了点引用点了个板砖。可以删除掉原来的图片,不一定非要覆盖,那就是可以有2个图片存在,然后用户选择性删除原图?
    这些都不是技术问题吧,是需求问题...技术上像你上面用的ajax都可以解决,没看出有什么问题?
      

  10.   

    你别用this,你换成图片所在div的id试试
      

  11.   

    可以问你一个问题吗?就是我也用ajaxfileupload 实现上传,可现在就是ie 不行,在ajaxfileupload.js 中jquery(form).submit() 不能提交到后台action 中,其他浏览器都是可以的