首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

关于生成文档后使用http上载方式打开

2012-09-27 
关于生成文档后使用http下载方式打开package com.---.downloadManagerimport java.io.Fileimport java.i

关于生成文档后使用http下载方式打开
package com.---.downloadManager;import java.io.File;import java.io.FileInputStream;import java.util.Map;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.opensymphony.webwork.interceptor.ServletRequestAware;import com.opensymphony.webwork.interceptor.ServletResponseAware;import com.opensymphony.xwork.ActionSupport;import com.---.DownloadConfig;public abstract class HttpDownloadAction extends ActionSupportimplements ServletResponseAware, ServletRequestAware {public abstract String getRootDirectory();private static final long serialVersionUID = 1L;private HttpServletResponse response;private HttpServletRequest request;private String prefix; private DownloadConfig downloadConfig; private String filename; private String message;private String fileDir;public String execute() throws Exception {fileDir = this.getRootDirectory();if (filename == null || filename.equals("")) {message = "文件下载路径为空!";return SUCCESS;}filename = new String(filename.getBytes("ISO-8859-1"),"UTF-8");String fileDownLoadPath = getFileDownloadPath() ;File file = new File(fileDownLoadPath);if (!file.exists()) { message = "文件" + filename + "不存在!";return SUCCESS; }FileInputStream fis = null;ServletOutputStream os = null;try {prefix = filename.substring(filename.lastIndexOf(".")+1).toLowerCase(); Map<String, String> str = downloadConfig.getResponseContentType();response.setContentType(downloadConfig.getResponseContentType().get(prefix));String userAgent = request.getHeader("User-Agent");if(userAgent.indexOf("MSIE") != -1) filename = "filename=" + java.net.URLEncoder.encode(filename,"UTF-8");elsefilename = "filename*=utf8''" + java.net.URLEncoder.encode(filename,"UTF-8");response.setHeader("content-Disposition", "attachment;" + filename); os = response.getOutputStream(); fis = new FileInputStream(fileDownLoadPath); byte[] buff = new byte[1024]; int n = 0; while ((n = fis.read(buff)) != -1) { os.write(buff, 0, n); } return NONE;} catch (Exception e) { System.out.println(e+"...");message = "文件" + filename + "不存在!"; } finally { if(fis != null) fis.close(); if(os != null) os.flush();}return SUCCESS;}private String getFileDownloadPath() {if(fileDir == null || fileDir.equals("")){return filename;}else{return fileDir + "\" + filename;}}public void setServletResponse(HttpServletResponse reponse) {response = reponse;}public void setServletRequest(HttpServletRequest request) {this.request = request;}public DownloadConfig getDownloadConfig() {return downloadConfig;}public void setDownloadConfig(DownloadConfig downloadConfig) {this.downloadConfig = downloadConfig;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public String getFilename() {return filename;}public void setFilename(String filename) {this.filename = filename;}}?

??? DownloadConfig:

package com.---.config;import java.util.Map;public class DownloadConfig {private Map<String,String> responseContentType;public Map<String, String> getResponseContentType() {return responseContentType;}public void setResponseContentType(Map<String, String> responseContentType) {this.responseContentType = responseContentType;}}

?

?

?

? downloadConfig.xml

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http//www.springframework.org/dtd/spring-beans.dtd"><beans default-autowire="byName"><bean id="downloadConfig" singleton="true"><!-- 下载文件时不同文件类型对应的response contentType配置 --><property name="responseContentType"><map><entry key="doc"><value>application/msword</value></entry><entry key="xls"><value>application/vnd.ms-excel</value></entry><entry key="txt"><value>text/plain</value></entry></map></property></bean></beans>

?

?

?

热点排行