码迷,mamicode.com
首页 > 编程语言 > 详细

每天学习一个小功能:java文件下载

时间:2017-09-13 00:35:46      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:text   for   文件上传   实现   turn   hash   学习   编码   indexof   

思路:

1、获取文件上传到upload文件夹下的文件名

2、将文件名处理成上传时的文件名并封装成集合给前端展示

3、前端根据提交的文件名再后台查找upload文件夹下查找并下载

 

代码:

/**
     * 1、获取文件上传到upload文件夹下的文件名

        2、将文件名处理成上传时的文件名并封装成集合给前端展示
     * @param request
     * @param model
     * @return
     */
    
    @RequestMapping("xiazai")
    public String xiaZai(HttpServletRequest request,Model model){
        
        // 实现思路:先获取upload目录下所有文件的文件名,再保存;跳转到down.jsp列表展示
        
                //1. 初始化map集合Map<包含唯一标记的文件名, 简短文件名>  ;
                Map<String,String> fileNames = new HashMap<String,String>();
                
                //2. 获取上传目录,及其下所有的文件的文件名
                String bathPath =request.getSession().getServletContext().getRealPath("/upload");
                // 目录
                File file = new File(bathPath);
                // 目录下,所有文件名
                String list[] = file.list();
                // 遍历,封装
                if (list != null && list.length > 0){
                    for (int i=0; i<list.length; i++){
                        // 全名
                        String fileName = list[i];
                        // 短名
                        String shortName = fileName.substring(fileName.lastIndexOf("#")+1);
                        // 封装
                        fileNames.put(fileName, shortName);
                    }
                }
                System.out.println(fileNames.size());
                model.addAllAttributes(fileNames);
        
        return "xiazai";
    }

 

/**
     * 1、获取文件上传到upload文件夹下的文件名
     * @param request
     * @param response
     * @return
     */
   

 

@RequestMapping("down")
    public void zhenZhengXiaZai(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException{
        // 获取用户下载的文件名称(url地址后追加数据,get)
        String fileName = request.getParameter("fileName");
        fileName = new String(fileName.getBytes("ISO8859-1"),"UTF-8");
        
        // 先获取上传目录路径
        String basePath = request.getSession().getServletContext().getRealPath("/upload");
        // 获取一个文件流
        InputStream in = new FileInputStream(new File(basePath,fileName));
        
        // 如果文件名是中文,需要进行url编码
        fileName = URLEncoder.encode(fileName, "UTF-8");
        // 设置下载的响应头,让浏览器自动下载
        response.setHeader("content-disposition", "attachment;fileName=" + fileName);
        
        // 获取response字节流
        OutputStream out = response.getOutputStream();
        byte[] b = new byte[1024];
        int len = -1;
        while ((len = in.read(b)) != -1){
            out.write(b, 0, len);
        }
        // 关闭
        out.close();
        in.close();
    }

每天学习一个小功能:java文件下载

标签:text   for   文件上传   实现   turn   hash   学习   编码   indexof   

原文地址:http://www.cnblogs.com/weiyuanquyu/p/7512611.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!