zoukankan      html  css  js  c++  java
  • java下载文件

     前台页面

    <a href="downloadAttachment.do?id=$!attachment.id">下载</a>

    后台action

    public String downloads(){
            try{
                String id = this.getAttachmentid();
                Attachment att = (Attachment) bean.findObject(Attachment.class, Long.parseLong(id));
                String filename = URLEncoder.encode(att.getFilename(), "UTF-8"); //设置转码,如果乱码的情况
                downLoadFile(att.getFilepath(),filename,this.getResponse()); //下载附件
            }catch(Exception e ){
                e.printStackTrace();
            }
            return null;
        }

     struts配置:

                 <action name="downloadAttachment" class="*Action" method="downloadAttachment">
    			<result name="success" type="stream"> 
    		        <param name="inputName">downloadFile</param> 
    		        <param name="bufferSize">1024</param> 
    		    </result> 
    		</action>

    后台工具类:

    public static void downLoadFile(String path,String fileName,HttpServletResponse response){        
            try{
                if(!"".equals(path)){                
                    File file=new File(ServletActionContext.getRequest().getRealPath("/")+path);//构造要下载的文件    
                    if(file.exists()){
                        InputStream ins=new FileInputStream(file);//构造一个读取文件的IO流对象
                        BufferedInputStream bins=new BufferedInputStream(ins);//放到缓冲流里面
                        OutputStream outs=response.getOutputStream();//获取文件输出IO流
                        BufferedOutputStream bouts=new BufferedOutputStream(outs);
                        response.setContentType(getContentType(fileName));//设置response内容的类型
                        response.setHeader("Content-disposition","attachment;filename="+fileName);//设置头部信息
                        int bytesRead = 0;
                        byte[] buffer = new byte[8192];
                        //开始向网络传输文件流
                        while ((bytesRead = bins.read(buffer, 0, 8192)) != -1) {
                            bouts.write(buffer, 0, bytesRead);
                        }
                        bouts.flush();//这里一定要调用flush()方法
                        ins.close();
                        bins.close();
                        outs.close();
                        bouts.close();
                    }else{
                        System.out.println("下载的文件不存在");
                    }
                }else{
                    System.out.println("下载文件时参数错误");
                }
    
            }catch(Exception e ){
                e.printStackTrace();
            }
        }
        
        /*
        设置文件类型
        */
         private static String getContentType(String fileName) {
          String fileNameTmp = fileName.toLowerCase();
          String ret = "";
          if (fileNameTmp.endsWith("txt")) {
           ret = "text/plain";
          }
          if (fileNameTmp.endsWith("gif")) {
           ret = "image/gif";
          }
          if (fileNameTmp.endsWith("jpg")) {
           ret = "image/jpeg";
          }
          if (fileNameTmp.endsWith("jpeg")) {
           ret = "image/jpeg";
          }
          if (fileNameTmp.endsWith("jpe")) {
           ret = "image/jpeg";
          }
          if (fileNameTmp.endsWith("zip")) {
           ret = "application/zip";
          }
          if (fileNameTmp.endsWith("rar")) {
           ret = "application/rar";
          }
          if (fileNameTmp.endsWith("doc")) {
           ret = "application/msword";
          }
          if (fileNameTmp.endsWith("ppt")) {
           ret = "application/vnd.ms-powerpoint";
          }
          if (fileNameTmp.endsWith("xls")) {
           ret = "application/vnd.ms-excel";
          }
          if (fileNameTmp.endsWith("html")) {
           ret = "text/html";
          }
          if (fileNameTmp.endsWith("htm")) {
           ret = "text/html";
          }
          if (fileNameTmp.endsWith("tif")) {
           ret = "image/tiff";
          }
          if (fileNameTmp.endsWith("tiff")) {
           ret = "image/tiff";
          }
          if (fileNameTmp.endsWith("pdf")) {
           ret = "application/pdf";
          }
          return ret;
         }
  • 相关阅读:
    UVALive 7352 Dance Recital
    [ An Ac a Day ^_^ ] UVALive 7270 Osu! Master
    vim配置文件
    数据结构 链表
    [ An Ac a Day ^_^ ] hrbust 2291 Help C5 分形
    [ An Ac a Day ^_^ ] hdu 2553 N皇后问题 搜索
    [ An Ac a Day ^_^ ] HihoCoder 1249 Xiongnu's Land 线性扫描
    hdu 5874 Friends and Enemies icpc大连站网络赛 1007 数学
    hdu 5876 Sparse Graph icpc大连站网络赛 1009 补图最短路
    6.Z字变换 direction
  • 原文地址:https://www.cnblogs.com/estellez/p/3941845.html
Copyright © 2011-2022 走看看