一个简单的http请求附件下载
2014-05-28 14:12
162 查看
附件的下载有很多种实现,使用servlet可以直接在response的输出流中直接写入文件数据,然后浏览器就会直接提示下载该附件。其中比较重要的是设置http请求的响应头,设置响应头的Content-Type以及Content-disposition,Content-Type可以根据附件的类型来设置,具体可以参考:MIME类型收录主要包含Content-Type的可设定值 文章地址:http://blog.csdn.net/dcqboke/article/details/27319185
下面是一个简单的servlet来实现附件下载功能:
package cn.qing.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownLoadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//需要下载的附件,在这里直接获取系统磁盘内的Excel文件
File file = new File("D:/sheetTemplate/constructsheet-export-template.xls");
String fileName = URLEncoder.encode(file.getName(), "utf-8");
//设置支持.xls(Excel)文件下载的contentType
response.setContentType("application/vnd.ms-excel");
//设置Content-disposition为attachment(附件),并设置文件名
response.setHeader("Content-disposition", "attachment; filename="+fileName);
int fileLength = (int)file.length();
response.setContentLength(fileLength);
InputStream inputStream = new FileInputStream(file);
ServletOutputStream outputStream = response.getOutputStream();
if(fileLength > 0)
{
byte[] buf = new byte[4096];
int count = 0 ;
while((count = inputStream.read(buf))!=-1)
{
//将附件信息写入ServletOutputStream中,
//请求成功后就会将这个ServletOutputStream作为响应内容返回
outputStream.write(buf, 0, count);
}
}
inputStream.close();
}
}
上面的例子中需要下载的附件直接在系统的磁盘中以文件的形式获取,在项目开发中可能是需要根据数据生成指定文件,然后提供下载功能。
下面是一个简单的servlet来实现附件下载功能:
package cn.qing.servlet;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownLoadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//需要下载的附件,在这里直接获取系统磁盘内的Excel文件
File file = new File("D:/sheetTemplate/constructsheet-export-template.xls");
String fileName = URLEncoder.encode(file.getName(), "utf-8");
//设置支持.xls(Excel)文件下载的contentType
response.setContentType("application/vnd.ms-excel");
//设置Content-disposition为attachment(附件),并设置文件名
response.setHeader("Content-disposition", "attachment; filename="+fileName);
int fileLength = (int)file.length();
response.setContentLength(fileLength);
InputStream inputStream = new FileInputStream(file);
ServletOutputStream outputStream = response.getOutputStream();
if(fileLength > 0)
{
byte[] buf = new byte[4096];
int count = 0 ;
while((count = inputStream.read(buf))!=-1)
{
//将附件信息写入ServletOutputStream中,
//请求成功后就会将这个ServletOutputStream作为响应内容返回
outputStream.write(buf, 0, count);
}
}
inputStream.close();
}
}
上面的例子中需要下载的附件直接在系统的磁盘中以文件的形式获取,在项目开发中可能是需要根据数据生成指定文件,然后提供下载功能。
相关文章推荐
- (转)写了一个简单的下载程序(23/07/2006更新)
- 一个Ftp上传下载的简单例子
- 一个简单的下载程序VB.NET示例
- JavaMail:集收发邮件、下载附件功能的简单Web应用(修改) 推荐
- xDom-一个简单的Delphi框架-介绍及下载
- 一个非常简单完整的聊天室演示程序,推荐初学者下载
- 一个简单的上传附件,并显示附件的方法.(JS的DOM操作取得input file的值.)
- 一个简单的多线程、断点下载Java程序
- 【转载】关于:读写xls文件,提供下载的一个小例子(jxl 的简单运用) - 创建文件
- 一个简单的使用wininet的http/ftp文件下载程序
- 一个简单的邮件查找类,用来查找特定主题的邮件,特定日期,或者是包含有附件的邮件
- Asp.net 2.0 一个简单的联动DropDownList示例(示例代码下载)
- 一个简单的ASP+AJAX留言本源码下载
- 一个简单的FTP客户端 实现上传下载
- 用silverlight2.0给微软DPE做的一个简单的demo,欢迎下载
- Asp.net 2.0 一个简单的联动DropDownList示例(示例代码下载)
- Asp.net 2.0 一个简单的联动DropDownList示例(示例代码下载)
- asp.net中用户下载一个已存在的附件
- 以简单插件形式写的一个图片(壁纸)下载工具
- 一个简单的使用wininet的http/ftp文件下载程序