java web文件下载功能实现 (转)
http://blog.csdn.net/longshengguoji/article/details/39433307
需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片
两种实现方法:
一:通过超链接实现下载
- <!DOCTYPE html>
 - <html>
 - <head>
 - <meta charset="UTF-8">
 - <title>Insert title here</title>
 - </head>
 - <body>
 - <h1>通过链接下载文件</h1>
 - <a href="/day06/download/cors.zip">压缩包</a>
 - <a href="/day06/download/1.png">图片</a>
 - </body>
 - </html>
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>通过链接下载文件</h1>
<a href="/day06/download/cors.zip">压缩包</a>
<a href="/day06/download/1.png">图片</a>
</body>
</html>
其中day06/download是文档路径,本实例的程序结构如下:
二:通过Servlet程序实现下载
- <!DOCTYPE html>
 - <html>
 - <head>
 - <meta charset="UTF-8">
 - <title>Insert title here</title>
 - </head>
 - <body>
 - <h1>通过链接下载文件</h1>
 - <a href="/day06/download/cors.zip">压缩包</a>
 - <a href="/day06/download/1.png">图片</a>
 - <h1>通过servlet程序下载文件</h1>
 - <a href="/day06/ServletDownload?filename=cors.zip">压缩包</a>
 - <a href="/day06/ServletDownload?filename=1.png">图片</a>
 - </body>
 - </html>
 
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>通过链接下载文件</h1>
<a href="/day06/download/cors.zip">压缩包</a>
<a href="/day06/download/1.png">图片</a>
<h1>通过servlet程序下载文件</h1>
<a href="/day06/ServletDownload?filename=cors.zip">压缩包</a>
<a href="/day06/ServletDownload?filename=1.png">图片</a>
</body>
</html>
其中,/day06/ServletDownload 是servlet程序的映射路径
- package com.lsgjzhuwei.servlet.response;
 - import java.io.FileInputStream;
 - import java.io.FileOutputStream;
 - import java.io.IOException;
 - import java.io.InputStream;
 - import java.io.OutputStream;
 - import javax.servlet.ServletException;
 - import javax.servlet.annotation.WebServlet;
 - import javax.servlet.http.HttpServlet;
 - import javax.servlet.http.HttpServletRequest;
 - import javax.servlet.http.HttpServletResponse;
 - /**
 - * Servlet implementation class ServletDownload
 - */
 - @WebServlet(asyncSupported = true, urlPatterns = { "/ServletDownload" })
 - public class ServletDownload extends HttpServlet {
 - private static final long serialVersionUID = 1L;
 - /**
 - * @see HttpServlet#HttpServlet()
 - */
 - public ServletDownload() {
 - super();
 - // TODO Auto-generated constructor stub
 - }
 - /**
 - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
 - */
 - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 - // TODO Auto-generated method stub
 - //获得请求文件名
 - String filename = request.getParameter("filename");
 - System.out.println(filename);
 - //设置文件MIME类型
 - response.setContentType(getServletContext().getMimeType(filename));
 - //设置Content-Disposition
 - response.setHeader("Content-Disposition", "attachment;filename="+filename);
 - //读取目标文件,通过response将目标文件写到客户端
 - //获取目标文件的绝对路径
 - String fullFileName = getServletContext().getRealPath("/download/" + filename);
 - //System.out.println(fullFileName);
 - //读取文件
 - InputStream in = new FileInputStream(fullFileName);
 - OutputStream out = response.getOutputStream();
 - //写文件
 - int b;
 - while((b=in.read())!= -1)
 - {
 - out.write(b);
 - }
 - in.close();
 - out.close();
 - }
 - /**
 - * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
 - */
 - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 - // TODO Auto-generated method stub
 - }
 - }
 
package com.lsgjzhuwei.servlet.response; import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /**
* Servlet implementation class ServletDownload
*/
@WebServlet(asyncSupported = true, urlPatterns = { "/ServletDownload" })
public class ServletDownload extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#HttpServlet()
*/
public ServletDownload() {
super();
// TODO Auto-generated constructor stub
} /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub //获得请求文件名
String filename = request.getParameter("filename");
System.out.println(filename); //设置文件MIME类型
response.setContentType(getServletContext().getMimeType(filename));
//设置Content-Disposition
response.setHeader("Content-Disposition", "attachment;filename="+filename);
//读取目标文件,通过response将目标文件写到客户端
//获取目标文件的绝对路径
String fullFileName = getServletContext().getRealPath("/download/" + filename);
//System.out.println(fullFileName);
//读取文件
InputStream in = new FileInputStream(fullFileName);
OutputStream out = response.getOutputStream(); //写文件
int b;
while((b=in.read())!= -1)
{
out.write(b);
} in.close();
out.close();
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
} }
重启tomcat服务器,即可实现对压缩包和对图片的下载。
java web文件下载功能实现 (转)的更多相关文章
- 【Servlet】java web 文件下载功能实现
		
需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一:通过超链接实现下载 在HTML网页中,通过超链接链接到要下载的文件的地址 <!DOCTYPE html> & ...
 - Java Web文件下载
		
Web文件下载有两种.一种是文件在站点文件夹下.在浏览器中直接输入文件路径就可以下载.如http://www.xxx.com/file.zip.第二种是文件不在站点文件夹下或者文件是动态生成的(导出报 ...
 - JAVA WEB ------ 文件下载及导出数据到office Execl表格
		
文件下载需要五步: 1.设置文件ContentType类型 // 设置文件ContentType类型,这样设置,会自动判断下载文件类型 response.setContentType("mu ...
 - Java web 文件下载
		
/** * 下载文件 * @param msg */ public boolean printOutFile(String fileFullName,String fileName) { if (fi ...
 - java  io   文件下载功能
		
一. @RequestMapping(value = "/download/{filename}") public void downloadFile(HttpServletReq ...
 - Java Web(一) Servlet详解!!
		
这篇文章到上一篇,距离的有点遥远呀,隔了大概有两个月把,中间在家过了个年,哈哈~ 现在重新开始拾起,最近在看一本个人觉得很棒的书,<Java Web 整合开发王者归来>,现在写的这一系列基 ...
 - (转)Java Web(一) Servlet详解!!
		
https://www.cnblogs.com/whgk/p/6399262.html 这篇文章到上一篇,距离的有点遥远呀,隔了大概有两个月把,中间在家过了个年,哈哈~ 现在重新开始拾起,最近在看一本 ...
 - 重拾Java Web应用的基础体系结构
		
目录 一.背景 二.Web应用 2.1 HTML 2.2 HTTP 2.3 URL 2.4 Servlet 2.4.1 编写第一个Servlet程序 2.5 JSP 2.6 容器 2.7 URL映射到 ...
 - JAVA文件下载功能问题解决日志
		
今天给报告系统做了个下载功能,遇到了挺多问题,通过查资料一一解决了. 1.首先遇到的问题是:java后台的输出流输出之后,没有任何报错,浏览器端不弹出保存文件的对话框,原本是ajax请求到后台的con ...
 
随机推荐
- Xtreme9.0 - Block Art 线段树
			
Block Art 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenges/block-art Descr ...
 - Boost StateChart实现状态机----秒表例程
			
Boost 提供了状态机的实现接口,采用了CRTP技术实现,下面以秒表为例子实现一个状态机,这是一个官方的例子,也可以参考资料:Boost Statechart 庫,状态机的状态转换图如下所示: 实现 ...
 - sql 计算两个经纬度点之间的距离
			
这里用到的算法和地球半径等数据均来自网络,此文只作整理记录. 地球半径值采用赤道半径 6378137.0米,这是1980年的国际标准数据. //存储过程 CREATE FUNCTION [f_GetD ...
 - AngularJS中Directive间交互实现合成
			
假设需要烹饪一道菜肴,有3种原料,可以同时使用所有的3种原料,可以使用其中2种,也可以使用其中1种. 如果以Directive的写法,大致是:<bread material1 material2 ...
 - Delphi判断文件是否正在被使用
			
首先,我们先来认识下CreateFile函数,它的原型如下 HANDLE CreateFile( LPCTSTR lpFileName, //指向文件名的指针 DWORD dwDesired ...
 - java  hash表
			
当使用一个哈希表,要指定用作键的对象,以及要链接到该键的值. 然后,该键经过哈希处理,所得到的散列码被用作存储在该表中值的索引. Hashtable定义了四个构造方法.第一个是默认构造方法: Hash ...
 - uifont 字体详解
			
时间2013-06-04 11:26:33 CSDN博客原文 http://blog.csdn.net/u010013695/article/details/9020611 我们在开发中很多时候要设 ...
 - #ifdef #else #endif  的用法
			
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短. 关 ...
 - 【Android】开源项目汇总-备用
			
from://http://www.eoeandroid.com/home.php?mod=space&uid=765778&do=blog&id=47674 Android开 ...
 - React中的的JSX
			
什么是JSX? JSX是JavaScript XML的缩写,其本质是js,表现形式类似于XML,与js区别在于可直接在里面编写html标签. 怎么使用JSX? 语法规则: JSX 的基本语法规则:HT ...