/**
* @author gao_jie
* 文件下载函数
*
*/
public class FileDownLoadSevrlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) {
try {
request.setCharacterEncoding("UTF-8");// 设置编码方式使得url中的汉字能处理
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
String oldTemplateName = request.getParameter("palatename");
String fileName = null;
String dir = null;
File file = null;
ITemplateManager iTemplateManager = TemplateManagerImpl.getInstance(); // 模板下载接口
String templatename = null;
if (oldTemplateName != null) {
try {
templatename = new String(oldTemplateName
.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String tempPath = iTemplateManager.getTemplatePath();
// 使用接口先生成文件然后下载
if (templatename.contains(File.separator)) {
fileName = templatename.substring(templatename
.lastIndexOf(File.separator) + 1);
if (templatename.contains("templates")) {
dir = templatename.substring(templatename
.indexOf("templates") + 10, templatename
.lastIndexOf(File.separator))
+ "";
} else {
dir = templatename.substring(0, templatename
.lastIndexOf(File.separator))
+ "";
}
} else {
fileName = templatename;
dir = "";
}
try {
file = iTemplateManager.downloadTemplate(fileName, tempPath
+ File.separator + dir);
} catch (ReportException e) {
e.printStackTrace();
}
// 下载做的准备
response.setContentType("textml;charset=UTF-8");
response.setContentType("application/x-msdownload;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=\""
+ fileName + "\"");
FileReader fileReader = null;
BufferedReader reader = null;
BufferedWriter writer = null;
try {
fileReader = new FileReader(file.toString());
reader = new BufferedReader(new FileReader(file.toString()));
writer = new BufferedWriter(response.getWriter());
String line = null;
while ((line = reader.readLine()) != null) {
writer.write(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileReader != null)
try {
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
}
if (reader != null)
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
if (writer != null)
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}