Java web----文件下载

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'download01.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  	<a href="<c:url value='/DownloadServlet?path=a.txt'/>">a.txt</a><br/>
  	<a href="<c:url value='/DownloadServlet?path=美女.png'/>">美女.png</a><br/>
  	<a href="<c:url value='/DownloadServlet?path=帅哥.avi'/>">帅哥.avi</a><br/>
  </body>
</html>

package com.cug.download;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.IOUtils;

public class DownloadServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setContentType("text/html;charset=utf-8");
		
		String fileName = req.getParameter("path");
		System.out.println(fileName);
		String filePath = this.getServletContext().getRealPath("/WEB-INF/downloads/"+fileName);
		File file = new File(filePath);
		if(!file.exists()){
			resp.getWriter().println("您所请求的文件不存在");
			return;
		}
		// 所有浏览器都会使用本地编码,即中文操作系统使用GBK
		// 浏览器收到这个文件名后,会使用iso-8859-1来解码
		fileName = new String(fileName.getBytes("gbk"),"ISO-8859-1");
		//添加content-disposition头,指定了在下载框中显示的文件名称。
		resp.addHeader("content-disposition", "attachment;filename="+fileName);
		IOUtils.copy(new FileInputStream(file), resp.getOutputStream());
	}
}

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	
<servlet>
	<servlet-name>UploadServlet01</servlet-name>
	<servlet-class>com.cug.upload.UploadServlet01</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>UploadServlet01</servlet-name>
	<url-pattern>/UploadServlet01</url-pattern>
</servlet-mapping>

<servlet>
	<servlet-name>UploadServlet02</servlet-name>
	<servlet-class>com.cug.upload.UploadServlet02</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>UploadServlet02</servlet-name>
	<url-pattern>/UploadServlet02</url-pattern>
</servlet-mapping>

<servlet>
	<servlet-name>UploadServlet03</servlet-name>
	<servlet-class>com.cug.upload.UploadServlet03</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>UploadServlet03</servlet-name>
	<url-pattern>/UploadServlet03</url-pattern>
</servlet-mapping>

<servlet>
	<servlet-name>DownloadServlet</servlet-name>
	<servlet-class>com.cug.download.DownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>DownloadServlet</servlet-name>
	<url-pattern>/DownloadServlet</url-pattern>
</servlet-mapping>
	
</web-app>





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值