這篇文章主要介紹了jsp實現從服務器下載xls文件到客戶端的方法,以完整實例形式較為詳細的分析了jsp文件下載的相關實現技巧,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了jsp實現從服務器下載xls文件到客戶端的方法。分享給大家供大家參考,具體如下:
參考網上的代碼寫了一個下載xls文件到客戶端的jsp頁面,只要將服務器的文件地址傳給這個jsp頁面就可以實現下載文件到客戶端了。
- <%@ page language="java"import="java.util.*"pageEncoding="utf-8"%>
- <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
- <%@ page import="java.io.*" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <link href="styles/basic.css" rel="stylesheet" type="text/css" />
- <title>download</title>
- </head>
- <%
- response.setCharacterEncoding("gb2312");
- request.setCharacterEncoding("gb2312");
- if (request.getParameter("file") != null) {
- OutputStream os = null;
- FileInputStream fis = null;
- try {
- String file = request.getParameter("file");
- if (!(new File(file)).exists()) {
- System.out.println("沒有文件");
- return;
- }
- System.out.println("文件名為:"+file);
- os = response.getOutputStream();
- response.setHeader("content-disposition", "attachment;filename=" + file);
- response.setContentType("application/vnd.ms-excel");//此項內容隨文件類型而異
- byte temp[] = new byte[1000];
- fis = new FileInputStream(file);
- int n = 0;
- while ((n = fis.read(temp)) != -1) {
- os.write(temp, 0, n);
- }
- } catch (Exception e) {
- out.print("出錯");
- } finally {
- if (os != null)
- os.close();
- if (fis != null)
- fis.close();
- }
- out.clear();
- out = pageContext.pushBody();
- }
- %>
- <form action="" method="post">
- <select name="file">
- <option value="D:/Program Files/apache-tomcat-6.0.18/webapps/StarAttendance/upload/temp.xls">
- 冷山sky_snow
- </option>
- </select>
- <input type="submit"/>
- </form>
- </html>
- <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
- <%@ page import="java.io.*" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <link href="styles/basic.css" rel="stylesheet" type="text/css" />
- <title>download</title>
- </head>
- <%
- response.setCharacterEncoding("gb2312");
- request.setCharacterEncoding("gb2312");
- if (request.getParameter("file") != null) {
- OutputStream os = null;
- FileInputStream fis = null;
- try {
- String file = request.getParameter("file");
- if (!(new File(file)).exists()) {
- System.out.println("沒有文件");
- return;
- }
- System.out.println("文件名為:"+file);
- os = response.getOutputStream();
- response.setHeader("content-disposition", "attachment;filename=" + file);
- response.setContentType("application/vnd.ms-excel");//此項內容隨文件類型而異
- byte temp[] = new byte[1000];
- fis = new FileInputStream(file);
- int n = 0;
- while ((n = fis.read(temp)) != -1) {
- os.write(temp, 0, n);
- }
- } catch (Exception e) {
- out.print("出錯");
- } finally {
- if (os != null)
- os.close();
- if (fis != null)
- fis.close();
- }
- out.clear();
- out = pageContext.pushBody();
- }
- %>
- <form action="" method="post">
- <select name="file">
- <option value="D:/Program Files/apache-tomcat-6.0.18/webapps/StarAttendance/upload/temp.xls">
- 冷山sky_snow
- </option>
- </select>
- <input type="submit"/>
- </form>
- </html>
2.另外一個修改后的版本(下載文件名可包含中文)
- <%@ page language="java"import="java.util.*,java.net.*"pageEncoding="utf-8"%>
- <%@ taglib prefix="c"uri="http://java.sun.com/jsp/jstl/core"%>
- <%@ page import="java.io.*" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <link href="styles/basic.css" rel="stylesheet" type="text/css" />
- <title>download</title>
- </head>
- <%
- response.setCharacterEncoding("UTF-8");
- request.setCharacterEncoding("UTF-8");
- String filepath = new String(request.getParameter("file").getBytes("ISO-8859-1"),"UTF-8");
- System.out.println("============================"+filepath);
- if (filepath != null) {
- OutputStream os = null;
- FileInputStream fis = null;
- try {
- String file = filepath;
- if (!(new File(file)).exists()) {
- System.out.println("沒有文件");
- return;
- }
- String filefilename = file.substring(file.lastIndexOf("//")+1);
- System.out.println("文件名為:"+filename);
- os = response.getOutputStream();
- response.setHeader("content-disposition", "attachment;filename=" + new String(filename.getBytes("GBK"), "ISO-8859-1"));
- response.setContentType("application/octet-stream");//八進制流 與文件類型無關
- byte temp[] = new byte[1024];
- fis = new FileInputStream(file);
- int n = 0;
- while ((n = fis.read(temp)) != -1) {
- os.write(temp, 0, n);
- }
- } catch (Exception e) {
- out.print("出錯了");
- } finally {
- if (os != null)
- os.close();
- if (fis != null)
- fis.close();
- }
- out.clear();
- out = pageContext.pushBody();
- }
- %>
- </html>
希望本文所述對大家JSP程序設計有所幫助。
新聞熱點
疑難解答