weblogic檔案下載不快顯視窗_WEBLOGIC

來源:互聯網
上載者:User

有這樣一個檔案下載串連如下:

<a href="檔案名稱.xls" >download</a>

在tomcat下,點download的時候,可以彈出檔案下載框,但是在weblogic下卻直接把該檔案開啟了。

原因是:weblogic是根據HTTP Header 的檔案類型來判斷是否彈出下載框的,預設的檔案類型是contentType="text/html",所以是自動開啟的。而tomcat是預設把檔案都作為二進位檔案,所以彈出對話方塊。

那如何讓weblogic能彈出對話方塊呢,樣本如下:

test1.jsp 內容如下:

 

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript">
  function returnTo(url){
   window.location= 'test2.jsp?filename='+encodeURI(url);
  }
</script>

//注意:encodeURI 函數可以很好的解決utf-8編碼下常見的 奇數個漢語最後一個為亂碼的問題。
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

</head>
<body>
<a href="javascript:returnTo('檔案名稱.xls')" >download</a>

</body>
</html>

 

 一:採用RequestDispatcher的方式進行

 

test2.jsp 內容如下:

 

<%@ page language="java"  pageEncoding="utf-8"%>
<%   
  String filename = request.getParameter("filename");
  
  response.setContentType("application/x-download");//設定為下載application/x-download   
  filename = new String(filename.getBytes("ISO-8859-1"), "utf-8"); //解決get請求傳遞參數為亂碼的問題。
  String display = java.net.URLEncoder.encode(filename,"utf-8"); //解決檔案下載框漢語檔案名稱為亂碼的問題。
  response.addHeader("Content-Disposition","attachment;filename=" + display); 
  try   
  {   
  RequestDispatcher dis = application.getRequestDispatcher("/"+filename);   
  if(dis!= null)   
  {   
  dis.forward(request,response);   
  }   
  response.flushBuffer();   
  }   
  catch(Exception e)   
  {   
  e.printStackTrace();   
  }   
  finally   
  {   
   
  }   
%>

 

二:採用檔案流輸出的方式下載

test2.jsp 內容如下:

<%@ page language="java" pageEncoding="utf-8"%>
<%
 out.clear(); 
 response.reset(); 
 response.setContentType("application/x-download");

 String filename = request.getParameter("filename");

 response.setContentType("application/x-download");
 filename = new String(filename.getBytes("ISO-8859-1"), "utf-8");
 String display = java.net.URLEncoder.encode(filename, "utf-8");
 response.addHeader("Content-Disposition", "attachment;filename="
   + display); // 
 String path = application.getRealPath(filename);//取得實體路徑
 java.io.OutputStream outp = null;
 java.io.FileInputStream in = null;
 try {
  outp = response.getOutputStream();
  in = new java.io.FileInputStream(path);

  byte[] b = new byte[1024];
  int i = 0;

  while ((i = in.read(b)) > 0) {
   outp.write(b, 0, i);
  }

 } catch (Exception e) {
  System.out.println("Error!");
  e.printStackTrace();
 } finally {
  if (in != null) {
   in.close();
   in = null;
  }
 }
%>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.