这篇文章主要介绍了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程序设计有所帮助。
新闻热点
疑难解答