日期:2014-05-17  浏览次数:20737 次

用servlet写下载功能的问题
		
String path=request.getParameter("path");
if(path!=null){
path=CommonUtil.getNewString(path);//处理中文乱码
CommonUtil.getNewString(path);//处理中文乱码
//path=new String(path.getBytes("ISO-8859-1"),"UTF-8");
System.out.println(path);
}
//得到要下载文件的真实路径
String realPath=this.getServletContext().getRealPath(path); 
System.out.println(realPath);
//创建要下载的文件对象
//DownLoadUtil.downLoadFile(realPath, response);
File file=new File(realPath);
//获得文件名
String fileName=file.getName();
//获得文件后缀
String ext=FileUtil.getFileType(fileName);
System.out.println(ext);
//解决下载时文件名中文乱码问题
fileName=URLEncoder.encode(fileName,"utf-8");
System.out.println(fileName);

//判断文件是否存在
 if (file.exists()) {  
 System.out.println("*********************************");
//   FileInputStream inStream = new FileInputStream(file); 
//   ServletOutputStream servletOS = response.getOutputStream();  
//   response.reset();
//             response.setContentType("application/x-msdownload");  
//             response.setHeader("Content-Disposition","attachment; filename=\"" + fileName + "\"");
//
////
//             int fileLength = (int) file.length();   
//             response.setContentLength(fileLength);   
//             /* 如果文件长度大于0 */  
//             if (fileLength != 0) {   
//                 /* 创建输入流 */  
////                
//                 byte[] buf = new byte[4096];   
//                 /* 创建输出流 */  
//                
//                 int readLength;   
//                 while (((readLength = inStream.read(buf)) !=-1)) {   
//                     servletOS.write(buf, 0, readLength);   
//                 }   
//                 inStream.close();   
//                 servletOS.flush();   
//              &