简易代码之家

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  157 Posts :: 2 Stories :: 57 Comments :: 0 Trackbacks

Jsp中文件下载的处理

有些人直接把要下载的文件放在项目web下面的虚拟路径下,然后提供链接下载,这种处理对客户端的要求比较高,要求客户机器上必须有要下载的文件类型才可以,没有的话下载下来的数据是乱的。客户端查看自己电脑上的文件类型,比如xp系统,打开一个文件夹,菜单中,工具,文件夹选项,文件类型,针对某个文件类型可以查看高级中的配置。另一种就是用流来进行下载,简单代码如下:

public ActionForward downloadFile(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            
throws Exception {
        BufferedInputStream bis 
= null;
        BufferedOutputStream bos 
= null;
        OutputStream fos 
= null;
        InputStream fis 
= null;

        File downloadFile 
= null;
        String dmpFolder 
= request.getSession().getServletContext()
                .getRealPath(
"")
                
+ "\\files\\downloads\\";
        File folder 
= new File(dmpFolder);
        File[] files 
= folder.listFiles();
        String fileName 
= request.getParameter("fileName");
        
for (int i = 0; i < files.length; i++{
            
if (files[i].getName().equals(fileName)) {
                downloadFile 
= files[i];
                
break;
            }

        }

        fis 
= new FileInputStream(downloadFile);
        bis 
= new BufferedInputStream(fis);
        fos 
= response.getOutputStream();
        bos 
= new BufferedOutputStream(fos);
        response.setHeader(
"Content-disposition""attachment;filename="
                
+ URLEncoder.encode(fileName, "utf-8"));
        
int bytesRead = 0;
        
byte[] buffer = new byte[8192];
        
while ((bytesRead = bis.read(buffer, 08192)) != -1{
            bos.write(buffer, 
0, bytesRead);
        }

        bos.flush();
        fis.close();
        bis.close();
        fos.close();
        bos.close();
        
return null;
    }
posted on 2010-06-08 18:16 Jakin.zhou 阅读(179) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: