<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java海闊天空

    編程是我的生活,但生活不僅僅是編程。

    兼容IE和Firefox的附件讀取和下載

    效果(Firefox3.0)

    1.獲取XML數(shù)據(jù)
    數(shù)據(jù)是這樣獲取的:
    /*
    * Generated by MyEclipse Struts
    * Template path: templates/java/JavaClass.vtl
    */
    package com.daijia.soft.hospital.struts.action;
    import java.io.PrintWriter;
    import java.util.List;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import com.daijia.soft.hospital.struts.form.DataMapForm;
    import com.daijia.soft.hospital.vo.AttachVo;
    /**
    * MyEclipse Struts Creation date: 06-28-2008
    *
    * XDoclet definition:
    *
    * @struts.action path="/attachAction" name="dataMapForm" parameter="method"
    *                scope="request" validate="true"
    */
    public class AttachAction extends BaseAction {
    /*
      * Generated Methods
      */
    /**
      * Method execute
      *
      * @param mapping
      * @param form
      * @param request
      * @param response
      * @return ActionForward
      */
    public ActionForward queryByProtectId(ActionMapping mapping,
       ActionForm form, HttpServletRequest request,
       HttpServletResponse response) throws Exception {
      DataMapForm dataMapForm = (DataMapForm) form;// TODO Auto-generated
                  // method stub
      response.setContentType("text/xml;charset=utf-8");// 返回XML類(lèi)型數(shù)據(jù)
      response.setHeader("pragma", "no-cache");
      response.setHeader("cache-control", "no-cache");
      response.setDateHeader("expires", 0);
      List<AttachVo> list = this.getHospitalService().getAttachsByProtectId(
        dataMapForm.getInt("pid"));
      StringBuffer xml = new StringBuffer("<attachs>");
      for(AttachVo a : list){
       xml.append("<attach old-file-name=""")
        .append(a.getAoldname()).append(""" ")
        .append("aid=""").append(a.getAid()).append(""" ")
        .append("size=""").append(a.getAfilesize()).append(""" ")
        .append("date=""").append(a.getAdatetime().toLocaleString()).append("""");
       xml.append("></attach>");
      }
      xml.append("</attachs>");
      if(logger.isDebugEnabled()){
       logger.debug("附件:" + xml.toString());
      }
      
      PrintWriter out = response.getWriter();
      out.println(xml.toString());
      return null;
    }
    }

    2.通過(guò)javascript顯示文件下載列表
    下載列表是這樣生成的:

    <script type="text/javascript">
    <!--
    var xmlhttp;
    function displayAttach(pid, s){
      //alert(s.offsetLeft);
      var old = document.getElementById("divid");
      if(old != null){
       document.body.removeChild(old); //先刪除附件層
      }
      var div = document.createElement("div");
      var w = 400; //DIV的寬度
      //獲取s左邊距和上邊距
      var olds = s;
      var x = olds.offsetLeft;
      var y = olds.offsetTop;
      while(olds = olds.offsetParent){
       x += olds.offsetLeft;
       y += olds.offsetTop;
      }
      x = x - w; //往左邊錯(cuò)開(kāi)w像素
      div.id = "divid";
      div.style.position = "absolute";
      div.style.backgroundColor = "white";
      div.style.left = x;
      div.style.top = y;
      div.style.width = w;
      div.className = "tdStyle3";
      var table = document.createElement("table");
      table.className = "tdStyle3";
      table.style.width = "100%";
      table.style.borderLeftColor = "blue";
      table.style.borderLeftStyle = "solid";
      table.style.borderLeftWidth = 1;
      table.style.borderRightColor = "blue";
      table.style.borderRightStyle = "solid";
      table.style.borderRightWidth = 1;
      table.style.borderTopColor = "blue";
      table.style.borderTopStyle = "solid";
      table.style.borderTopWidth = 1;
      table.style.borderBottomColor = "blue";
      table.style.borderBottomStyle = "solid";
      table.style.borderBottomWidth = 1;
      
      var tr = table.insertRow(0);
      var titles = new Array("文件名", "文件大小", "上傳日期");
      for(var i = 0; i < titles.length; i ++){
       var td1 = tr.insertCell(i);
       if(i == 2){
        td1.style.textAlign = "right";
        var closea = document.createElement("a");
        closea.innerHTML = "×";
        closea.style.fontWeight = "bold";
        closea.style.cursor = "pointer";
        closea.onclick = function(){
         var old2 = document.getElementById("divid");
         if(old2 != null){
          document.body.removeChild(old2); //先刪除附件層
         }
        };
        td1.appendChild(closea);
       }
      }
      
      var tr = table.insertRow(1);
      for(var i = 0; i < titles.length; i ++){
       var td1 = tr.insertCell(i);
       td1.innerHTML = titles[i];
       td1.style.fontWeight = "bold";
      }
      
      //通過(guò)ajax得到附件數(shù)據(jù)
      if(window.XMLHttpRequest){
       xmlhttp = new XMLHttpRequest();
       if(xmlhttp.overrideMimeType){
        xmlhttp.overrideMimeType("text/xml");
       }
      }else if(window.ActiveXObject){
       xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      }
      
      xmlhttp.open("get", "attach.do?method=queryByProtectId&dataMap(pid)=" + pid);
      xmlhttp.setRequestHeader("cache-control", "no-cache");
      xmlhttp.send(null);
      xmlhttp.onreadystatechange = function(){
       if(xmlhttp.readyState == 4){
        if(xmlhttp.status == 200){
         var j = 0;
        
         var xml = xmlhttp.responseXML;
         var root = xml.documentElement;
         var childs = root.childNodes;
         if(childs.length == 0){
          var trj = table.insertRow(2);
          var tdj0 = trj.insertCell(0);
          tdj0.innerHTML = "嘿嘿,沒(méi)有附件";
         }else{
          for(j = 0; j < childs.length; j ++){
           var trj = table.insertRow(j + 2); //在firefox中,添加新行時(shí)必須加行索引參數(shù)
           var tdj0 = trj.insertCell(0);//在firefox中,添加新行時(shí)必須加列索引參數(shù)
           var a = document.createElement("a");
           a.innerHTML = childs.item(j).getAttribute("old-file-name");
           a.href = "download.do?dataMap(aid)=" + childs.item(j).getAttribute("aid");
           tdj0.appendChild(a);
          
           var tdj1 = trj.insertCell(1);
           tdj1.innerHTML = childs.item(j).getAttribute("size");
          
           var tdj2 = trj.insertCell(2);
           tdj2.innerHTML = childs.item(j).getAttribute("date");
          }
         }
        
        }
       }
      };
      
      
      
      div.appendChild(table);
      document.body.appendChild(div);
    }
    //-->
    </script>

    3.下載選擇的文件(使用Struts1.2.6自帶的下載Action實(shí)現(xiàn))
    文件是這樣下載的:
    package com.daijia.soft.hospital.struts.action;
    import java.io.File;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.log4j.Logger;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.actions.DownloadAction;
    import com.daijia.soft.hospital.service.IHospitalService;
    import com.daijia.soft.hospital.struts.form.DataMapForm;
    import com.daijia.soft.hospital.vo.AttachVo;
    public class DownFileAction extends DownloadAction {
    protected static Logger logger = Logger.getLogger("action");
    private IHospitalService hospitalService;
    public void setHospitalService(IHospitalService hospitalService) {
      this.hospitalService = hospitalService;
    }
    public IHospitalService getHospitalService() {
      return hospitalService;
    }
    @Override
    protected StreamInfo getStreamInfo(ActionMapping arg0, ActionForm form,
       HttpServletRequest arg2, HttpServletResponse response) throws Exception {
      DataMapForm dataMapForm = (DataMapForm) form;
      AttachVo vo = hospitalService.getRealFileName(dataMapForm.getInt("aid"));
      response.reset();
      //attachment:下載
      //inline:在瀏覽器中顯示
      response.setHeader("Content-disposition", "attachment;filename=" + new String(vo.getAoldname().getBytes(), "iso-8859-1"));// 設(shè)置文件名稱(chēng)
      //ResourceStreamInfo rsi = new ResourceStreamInfo("application/x-msdownload", this.getServlet().getServletContext(), "smtp.JPG");
      FileStreamInfo rsi = new FileStreamInfo("application/x-msdownload", new File(vo.getAnewname()));
      return rsi;
    }
    }

    posted on 2008-07-04 09:29 李贊紅 閱讀(1541) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    <2008年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    統(tǒng)計(jì)

    常用鏈接

    留言簿(12)

    隨筆檔案(28)

    相冊(cè)

    技術(shù)友情博客

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲国产精品无码久久一线| 不卡精品国产_亚洲人成在线| 亚洲av无一区二区三区| 四虎免费永久在线播放| 国产在线观看xxxx免费| 亚洲国产成人九九综合| 国产一区二区三区在线免费| 久久国产乱子精品免费女| 亚洲1区1区3区4区产品乱码芒果 | 91午夜精品亚洲一区二区三区| 成人在线视频免费| 久99久无码精品视频免费播放| 亚洲沟沟美女亚洲沟沟| 久久激情亚洲精品无码?V| 精品免费人成视频app| fc2免费人成在线视频| 亚洲中字慕日产2020| 国产精品亚洲高清一区二区| 日韩欧毛片免费视频| 国产一级a毛一级a看免费人娇| 亚洲中文字幕乱码熟女在线| 亚洲成在人线av| xvideos亚洲永久网址| 国产免费AV片在线播放唯爱网| 亚洲精品黄色视频在线观看免费资源 | 一级毛片试看60分钟免费播放| 亚洲一区中文字幕在线观看| 在线亚洲精品福利网址导航| 免费激情视频网站| 5g影院5g天天爽永久免费影院| japanese色国产在线看免费| 亚洲av无码专区在线观看亚| 亚洲国产高清在线精品一区| 亚洲人成中文字幕在线观看| 免费一级毛片不卡不收费| 可以免费看黄的网站| 一级成人a毛片免费播放| 国产高潮流白浆喷水免费A片 | 国产精品亚洲lv粉色| 亚洲人成电影网站久久| 亚洲伊人tv综合网色|