java中文件流的实例,java 文件流上载实例笔记

java 文件流下载实例笔记

servlet.java

package cn.servlet;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.io.UnsupportedEncodingException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* Servlet implementation class FiledownloadServlet

*/

public class FiledownloadServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

/**

* @see HttpServlet#HttpServlet()

*/

public FiledownloadServlet() {

super();

// TODO Auto-generated constructor stub

}

/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse

* response)

*/

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

this.doPost(request, response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse

* response)

*/

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

// String agent = request.getHeader("USER-AGENT");

// System.out.println("agent:\t" + agent + "\n\n");

File file = new File("E:\\Files\\OSGI\\OSGi.pdf");

String name = "中文.pdf";

System.out.println(downLoadFile(request, response, file, name));

}

/**

* Firefox-->Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101

*

* Firefox/12.0 IE-->Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1;

* Trident/4.0; Foxy/1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET

* CLR 3.0.30729; Media Center PC 6.0)

*

* Chrome-->Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.5 (KHTML, like

* Gecko) Chrome/19.0.1084.46 Safari/536.5

*

* @param request

* @param name

* @return

*/

public static String encodeFileName(HttpServletRequest request, String name) {

String agent = request.getHeader("USER-AGENT");

String returnName;

if (null != agent && -1 != agent.indexOf("MSIE")) { // IE

try {

returnName = java.net.URLEncoder.encode(name, "utf-8");

} catch (UnsupportedEncodingException e) {

returnName = name;

}

} else { // Firefox Chrome

try {

returnName = new String(name.getBytes("utf-8"), "iso8859-1");

} catch (UnsupportedEncodingException e) {

returnName = name;

}

}

return returnName;

}

/**

*

* @param request

* @param response

* @param file

* @return

*/

public static boolean downLoadFile(HttpServletRequest request,

HttpServletResponse response, File file,String downName) {

boolean returnFlag = false;

if (file.exists()) { // file is not null

if (file.isFile()) { // must is a file

response.setContentType("application/x-download");

response.setCharacterEncoding("utf-8");

response.setHeader("Content-disposition","attachment; filename="+ encodeFileName(request, downName));

response.setHeader("Content-Length",file.length()+"");

//以下慎重

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "No-cache");

response.setDateHeader("Expires", 0);

InputStream is = null;

OutputStream os = null;

try {

os = response.getOutputStream();

is = new FileInputStream(file);

byte[] b = new byte[1024];

int len = 0;

while ((len = is.read(b)) != -1) {

os.write(b, 0, len);

}

os.flush();

returnFlag=true;

} catch (IOException e) {

// log

returnFlag=false;

} finally {

if (is != null) {

try {

is.close();

returnFlag=true;

} catch (IOException e) {

returnFlag=false;

// log

}

}

if (os != null) {

try {

os.close();

returnFlag=true;

} catch (IOException e) {

returnFlag=false;

// log

}

}

}

}

}

return returnFlag;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值