首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

用servlet写下载功能的有关问题

2013-03-26 
用servlet写下载功能的问题String pathrequest.getParameter(path)if(path!null){pathCommonUtil.ge

用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();   
//                 servletOS.close();   
//                


//             }
//           }else{
//           System.out.println("文件不存在!");
//        
//           }



path是从jsp页面传过来的路径信息
如果注释的代码不去掉注释,控制台就会正常打印system.out.println()中的内容
但是去掉注释system.out.println()中的内容就会变成乱码,说文件不存在,且会输出三遍,也就是程序从头执行好几遍
即使下下来的word文档里面也没有内容,有时候会下载失败
请问这是怎么个情况啊 servlet
[解决办法]
给response设置一下编码方式,如果下载的word是用户上传的文件,就直接href引向用户的文件地址,完全可以不用流去写
[解决办法]
下载可以直接在页面上做。。。

热点排行