• java 通用文件下载 excel,pdf,word,jpg,exe,rar


    <%@ page contentType="text/html; charset=GBK" %>
      <%@ page autoFlush="false" %>
      <%@ page import="java.sql.*" %>
      <%@ page import="java.io.*" %>
      <%@ page import="java.util.*" %>
      <%@ page import="java.awt.*" %>
      <%@ page import="java.awt.image.*" %>
      <%@ page import="com.sun.image.codec.jpeg.*" %>
      <%@ page import="com.sun.image.codec.jpeg.*" %>

      <%!
        public static String getcontentType(String pextFileName) //获得扩展名 by gisoracle  {
          String pext=pextFileName.toLowerCase();
          if (pext.equals(".xls"))
          {
            return "application/vnd.ms-excel";
          }
          if (pext.equals(".doc"))
          {
            return "application/msword";
          }
          if (pext.equals(".txt"))
          {
            return "text/plain";
          }
          if (pext.equals(".pdf"))
          {
            return "application/pdf";
          }
          if (pext.equals(".jpg")||pext.equals(".jpeg"))
          {
            return "image/jpeg";
          }
          if (pext.equals(".ppt"))
          {
            return "application/vnd.ms-powerpoint";
          }
          if (pext.equals(".gif"))
          {
            return "image/gif";
          }
          return "text/html";
        }
    %>
    <%
      String filename =request.getParameter("filename");
      File downFile = new File(filename);
      String fileext=FileOper.getFiletype(downFile);
      System.out.println("fileext="+fileext);
      String contentType1 =getcontentType(fileext);
      System.out.println("contentType1="+contentType1);
      try {
      out.clear();
      response.setContentType(contentType1);
      filename = new String(filename.getBytes("GBK"), "ISO-8859-1");
      response.setHeader("Content-Disposition","attachment; filename=" +downFile.getName());
      response.addHeader("Cache-Control", "no-cache");
      InputStream blobStream = new FileInputStream(downFile);
      ServletOutputStream outStream = response.getOutputStream();
      byte[] buffer = new byte[10 * 1024];
      int nbytes = 0;
      while ( (nbytes = blobStream.read(buffer)) != -1) {
      outStream.write(buffer, 0, nbytes);
      }
      outStream.flush();
      outStream.close();
      blobStream.close();
      }
      catch (Exception e) {
      System.out.println(e);
      }
    %>

    -------------------------------------------------

    分装为方法调用:

    public void downFile() throws FileNotFoundException {
            HttpServletRequest request = ServletActionContext.getRequest();
            HttpServletResponse response = ServletActionContext.getResponse();
            // String filename =request.getParameter("filename");
            HttpSession session = (HttpSession) request.getSession();
            ServletContext application = (ServletContext) session
                    .getServletContext();
            String fileUrl = application.getRealPath("")
                    + "/wtVideo/video/file/WebComponents.exe";// 获取所需要下载文件的url
            String filename = fileUrl;
            File downFile = new File(filename);
            // String fileext=File.getFiletype(downFile);
            // System.out.println("fileext="+fileext);
            String contentType1 = this.getcontentType(filename);
            System.out.println("contentType1=" + contentType1);
            try {
                response.setContentType(contentType1);
                filename = new String(filename.getBytes("GBK"), "ISO-8859-1");
                response.setHeader("Content-Disposition", "attachment; filename="
                        + downFile.getName());
                response.addHeader("Cache-Control", "no-cache");
                InputStream blobStream = new FileInputStream(downFile);
                ServletOutputStream outStream = response.getOutputStream();
                byte[] buffer = new byte[10 * 1024];
                int nbytes = 0;
                while ((nbytes = blobStream.read(buffer)) != -1) {
                    outStream.write(buffer, 0, nbytes);
                }
                outStream.flush();
                outStream.close();
                blobStream.close();
            } catch (Exception e) {
                System.out.println(e);
            }
        }

  • 相关阅读:
    system函数
    如何:配置 ClickOnce 信任提示行为
    linux中shell变量$#,$@,$0,$1,$2的含义解释 (转载)
    C/C++中如何在main()函数之前执行一条语句?
    循环小数表示法
    struct/class等内存字节对齐问题详解
    malloc(0)
    C语言实现程序跳转到绝对地址0x100000处执行
    嵌入式程序设计中C/C++代码的优化
    backtrace和backtrace_symbols
  • 原文地址:https://www.cnblogs.com/yongwuqing/p/3968455.html
Copyright © 2020-2023  润新知