public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, java.io.IOException {
String saveUrl = request.getParameter("url");
//有配置存儲路徑
String savePath = ConfUtil.getValue("savePath");
if(savePath != null && !"".equals(savePath)) {
saveUrl = savePath + "/" + saveUrl;
}else{
//無存儲路徑時,讀預設的存儲位置,sc項目下
saveUrl = request.getSession().getServletContext()
.getRealPath("") + saveUrl;
}
File f = new File(saveUrl);
if (!f.exists()) {
response.sendError(404, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;
String fn = request.getParameter("fn");
if(fn == null || fn.isEmpty()){
fn = f.getName();
}
System.out.println(f.getName()+"============");
response.reset(); // 非常重要
// 純下載下傳方式
response.setContentType("application/x-msdownload");
System.out.println(f.getName());
System.out.println(fn);
String formatFileName = encodingFileName(fn);
// response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());
response.setHeader("Content-Disposition", "attachment; filename=" + formatFileName);
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
}
public static String encodingFileName(String fileName) {
String returnFileName = "";
try {
returnFileName = URLEncoder.encode(fileName, "UTF-8");
returnFileName = StringUtils.replace(returnFileName, "+", "%20");
if (returnFileName.length() > 150) {
returnFileName = new String(fileName.getBytes("GB2312"), "ISO8859-1");
returnFileName = StringUtils.replace(returnFileName, " ", "%20");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
if (log.isWarnEnabled()) {
log.info("Don't support this encoding ...");
}
}
return returnFileName;
}