package com.wenku.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.common.util.ConstData;
import com.common.util.MyConfig;
import com.common.util.Util;
import com.wenku.entity.MyWenKu;
import com.wenku.service.WenKuService;
public class DownAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)throws IOException,ServletException{
String guid=request.getParameter("guid");
ServletOutputStream out = null;
InputStream inStream = null;
WenKuService service = WenKuService.getInstance();
try {
MyWenKu wenku = service.getWenKu(guid);
String dir = Util.getFilePath(MyConfig.getFiledataDir());
String fileName = wenku.getFtitle()+"."+wenku.getFext();
String filePath = dir+wenku.getFsourcefile();
File file = new File(filePath);
inStream = new FileInputStream(filePath);
response.reset();// 清空response
response.setContentType("application/x-msdownload");
// 设置response的Header ISO_8859_1
response.addHeader("Content-Disposition", "attachment;filename="
+ new String(fileName.getBytes("gb2312"), "ISO_8859_1"));
response.addHeader("Content-Length", "" + file.length());
byte[] b = new byte[1024*4];
int len = 0;
long length = 0;
out = response.getOutputStream();
// 循环取出流中的数据
while ((len = inStream.read(b)) > 0) {
out.write(b, 0, len);
}
out.flush();//这句会弹出下载对话框(你也可以选择打开)
out.close();
inStream.close();
long end = System.currentTimeMillis();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}