您的位置:首页 > 编程语言 > Java开发

java文件下载及名称乱码问题

2012-02-23 14:09 399 查看
package com.wind.dairysystem.controller;

import java.io.BufferedInputStream;

import java.io.BufferedOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.swing.filechooser.FileSystemView;

import com.wind.dairysystem.dao.DBUtil;

public class ImportUserDairyToExcel extends HttpServlet{

@Override

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

resp.setCharacterEncoding("utf-8");

//S流下载

resp.setContentType("application/octet-stream;charset=UTF-8");

//E流下载

String time = req.getParameter("time");

FileSystemView fsv = FileSystemView.getFileSystemView();

String homePath = fsv.getHomeDirectory().getPath();

String fileName = "";

if(time != null)

fileName = "WWPI_成员日志统计结果."+time+".xls";

else

fileName = "WWPI_成员日志统计结果.xls";

String retuName = new String(fileName.getBytes("utf-8"),"ISO8859_1");

fileName = homePath +"\\"+ fileName;

System.out.println(fileName);

File excel = new File(fileName);

String year = time.substring(0, 4);

String mouth = time.substring(5,7);

DBUtil db = new DBUtil();

try {

db.importUserDairyToExcel(excel, year, mouth);

}catch(Exception e){

e.printStackTrace();

}

//STest

// 写流文件到前端浏览器

ServletOutputStream out = resp.getOutputStream();

System.out.println("retuName:" + retuName);

resp.reset();

resp.addHeader("Content-Disposition", "attachment; filename=" + retuName);

BufferedInputStream bis = null;

BufferedOutputStream bos = null;

try {

bis = new BufferedInputStream(new FileInputStream(fileName));

bos = new BufferedOutputStream(out);

byte[] buff = new byte[2048];

int bytesRead;

while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {

bos.write(buff, 0, bytesRead);

}

} catch (IOException e) {

throw e;

} finally {

if (bis != null)

bis.close();

if (bos != null)

bos.close();

}

excel.delete();

//ETest

//resp.getWriter().print("生成成功!");

}

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doPost(req, resp);

}

}

ext前端:

window.open("importUserDairyToExcel?time="+time);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: