使用response实现文件下载注意点
创建web工程,使用response实现文件的下载.
在webRoot下创建download文件,里面包含要下载的文件,现在把源码贴上来,然后再说我遇到的问题
public class DownLoadDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String path = this.getServletContext().getRealPath("/download/倒影.jpg");
System.out.println("路径是==="+path);
//lastIndexOf返回的是最后一次出现的索引,截取的话必须要+1,从/的后面开始截取
String filename = path.substring(path.lastIndexOf("/")+1);
//注意:在mac中就是/,但是在windows中,文件路径是\,\是转译符,要再加上一个\,\\才是\:
// String filename = path.substring(path.lastIndexOf("\\")+1);这是在windows下的文件路径截取
System.out.println("文件名是==="+filename);
//如果下载的文件是中文的话,文件需要经过URL编码
response.setHeader("content-disposition", "attachment;filename="+URLEncoder.encode(filename,"UTF-8"));
InputStream in = null;
OutputStream out = null;
try {
in = new FileInputStream(path);
int len = 0;
byte bys[] = new byte[1024];
out = response.getOutputStream();
while((len = in.read(bys)) > 0){
out.write(bys, 0, len);
}
} finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
两个需要注意的点:
1.通过文件路径获取文件名,在代码中已经说过,windows和mac的路径是不一样的,这个一定要注意,不然下载就会出错
2.当文件名是中文时,文件要通过URL编码
使用response实现文件下载注意点的更多相关文章
- response与文件下载
参考博客: http://www.cnblogs.com/lcpholdon/p/4380980.html http://www.cnblogs.com/mingforyou/p/3281945.ht ...
- Http响应response(文件下载、验证码)
Http响应response response:响应 作用: 往浏览器写东西 组成部分: 响应行 响应头 响应体 操作响应行 格式: 协议/版本 状态码 状态码说明 状态码: 1xx:已发送请求 2x ...
- response实现文件下载
package cn.itcast.response; import java.io.FileInputStream; import java.io.IOException; import java. ...
- 使用response实现文件下载功能
response.setContentType("text/html;charset=utf-8"); response.setCharacterEncoding("u ...
- java web response提供文件下载功能
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- response 输出中文数据 文件下载
使用OutputStream或者PrintWriter向客户端浏览器输出中文数据 package com.xc.response; import java.io.IOException; import ...
- spring4 文件下载功能
需要准备的工具和框架 Spring 4.2.0.RELEASE Bootstrap v3.3.2 Maven 3 JDK 1.7 Tomcat 8.0.21 Eclipse JUNO Service ...
- JavaWeb基础:Servlet Response
ServletResponse简介 ServletResponse代表浏览器输出,它提供所有HttpResponse的设置接口,可以设置HttpResponse的响应状态,响应头和响应内容. 生命周期 ...
- ASP.NET 实现PDF文件下载
本文介绍了一种在ASP.NET中下载文件的方法. 方法一:可能是最简单的.最短的方式: Response.ContentType = "application/pdf"; Resp ...
随机推荐
- poj_2778_DNA Sequence(AC自动机+矩阵)
题目链接:poj_2778_DNA Sequence 题意: 有m个模式串,然后给你一个长度n,问你n长度的DNA序列有多少种不包含这m个模式串 题解: 这题显然要用AC自动机,将模式串的AC自动机建 ...
- getuid和geteuid的区别
getuid() : 函数返回一个调用程序的真实用户ID.表明当前运行位置程序的执行者. geteuid(): 函数返回返回一个有效用户的ID.(EUID)是你最初执行程序时所用的ID,该ID是程序 ...
- sublime 2
just baidu sublime license and find a free one!
- JAVA EE 运行环境配置(包含JAVA SE)
JAVA EE 运行环境配置(包含JAVA SE) 1.下载并安装jre-7u7-windows-i586.exe (最新的JAVA运行环境) 2.下载并安装java_ee_sdk-6u4-jdk7- ...
- sql server 2000/2005递归
/* 递归查询 塗聚文---SQL Server 2005环境下的实现: */--生成测试数据 create table Dept(ID int,ParentID int,msg varchar(20 ...
- ProgressDialog
几个方法介绍: 1.setMax() 设置对话框中进度条的最大值. 2.setTile() 设置标题. 3.setProgressStyl() 设置对话框中进度条的样式.例如:环形和水平. 参数: P ...
- javascript IP验证
//IP验证function isIP(strIP){try{if(strIP.length<7){return false;}var re=/^(\d+)\.(\d+)\.(\d+)\.(\d ...
- sql server两种分页方法
方法一: --分页方法一 OrderID,CustomerID, EmployeeID,OrderDate,ShippedDate,ShipName,ShipAddress,Freight from ...
- LA 4329 BIT 分治
#include <cstdio> #include <queue> #include <cstring> #include <iostream> #i ...
- XAMPP(v1.83)中的PHP(v5.5.15)访问SQLServer2014
驱动安装: 1. 下载SQLServer的微软官方PHP驱动,http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx 2. 安装SQLSRV31 ...