grails上传多张图片实时预览

本人也是自己探索而来。初学,所以代码有点冗余,请多见谅。。。。本方法适合IE,搜狗浏览器,不适合火狐。

效果如图:

 

前台代码:

//这是创建页面,如果是修改页面,先从数据库中获得图片之后,如果还要求可以修改,需要再在load()方法中依情况加上document.getElementById("picdemo").src="";

<script> 

function loading(imgFile){
    var imgDiv = document.getElementById("picdemo");
         imgDiv.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = scale)";
         imgDiv.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;
         document.getElementById("picdemo").style.display='';
  }

  function load2(imgFile){
      var imgDiv = document.getElementById("picdemo2");
         imgDiv.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = scale)";
         imgDiv.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;
         document.getElementById("picdemo2").style.display='';

   }
  function load3(imgFile){
    var imgDiv = document.getElementById("picdemo3");
         imgDiv.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod = scale)";
         imgDiv.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;
         document.getElementById("picdemo3").style.display='';
   }

 

var index=1;
function More(){
 if(index<3){
  document.getElementById("more"+index).style.display='';
  index=index+1;
 }else{
    alert("最多只能添加3张照片");
 }
}

</script>

  <tr class="prop" style="font: 12px;">
             <td valign="top" class="name">
                 <input  type="file"  id="photo"   οnchange="loading(this)" name="photo" value=""  />   
                 <input    style="display:none" type="image" name="picdemo" id="picdemo" src="" width="60" height="60" />                                                             
                 <input type="button" value="更多" class='button_40px'  οnclick="More();">
              </td>
  </tr>  
  <tr id="more1" style="display:none">
             <td>
                 <input  type="file"   id="photo2"  name="photo2" οnchange="load2(this);" value=""  />
                 <input style="display:none" type="image" name="picdemo2" id="picdemo2" src="" width="60" height="60" />
             </td>
  </tr>
  <tr id="more2" style="display:none">
             <td>
                 <input  type="file"   id="photo3"  name="photo3" value="" οnchange="load3(this);" />
                 <input  style="display:none" type="image" name="picdemo3" id="picdemo3" src="" width="60" height="60" />
             </td>
    </tr>

 

后台代码:

  def f = request.getFile("photo");
  def f1 = request.getFile("photo2");
  def f2 = request.getFile("photo3");

  InputStream iso =null;

 if(f&&!f.isEmpty()){
   iso =f.getInputStream();
   flag=insertPhoto(insertId,iso)
  }

 def insertPhoto(insertId,InputStream iso){
  def flag= false;
  try {
   Connection conn = SqlCon.getCon();  //获得数据库连接 此处,我已经写好了连接方法,直接调用,各位借鉴的时候,不可照搬,自己写连接。
   byte[] description = "";
   def   sql="""insert into photo_list(id,version,obstacle_id,photo,record_state)values
    (PHOTO_LIST_SEQUENCE.NEXTVAL,0,?,?,0)""";   //sql语句的id是根据sequence增长的,我在数据库中写好了sequence.各位自己写。
   def pstmt = conn.prepareStatement(sql);
   pstmt.setInt(1,insertId.toInteger());
   pstmt.setBinaryStream(2, iso, iso.available());
   pstmt.execute();
   pstmt.close();
   if(iso!=null){
    iso.close();
   }
   conn.close();
   flag=true;
  }catch (Exception e) {
   e.printStackTrace();
  }
  return flag

 }

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值