您的位置:首页 > 编程语言 > Java开发

java本地文件下载功能

2017-07-19 23:29 537 查看
文件下载部分:以二进制流数据下载,也是最常见的一种 

  @RequestMapping(value="/downloadqrcodes",method={RequestMethod.GET,RequestMethod.POST})

    public ResponseEntity<byte[]> download(String filename,HttpServletRequest req,HttpServletResponse res) throws Exception {

        

        System.out.println(req.getCharacterEncoding());

        System.out.println(filename);

        ApplicationContext ctx = GetApplication.getApp();

        QrcodepersonMapper qrcodepersonMapper = (QrcodepersonMapper) ctx.getBean("qrcodepersonMapper");

        Qrcodeperson qrcodeperson = qrcodepersonMapper.selectByPrimaryKey(Integer.parseInt(filename));

        String filen = qrcodeperson.getUrlname();

        

        //下载文件路径

        //filename="何家劲.jpg";

        String path = req.getServletContext().getRealPath("/file/");

        File file = new File(path+File.separator+filen);

        System.out.println("文件路径为:"+path+File.separator+filen);

        HttpHeaders headers = new HttpHeaders();

        //下载显示的文件名,解决中文名称乱码的问题

        String downloadFileName = new String(filen.getBytes("UTF-8"), "ISO-8859-1");  //为了下载下来的名字和文件的名字相同

        System.out.println(downloadFileName);

        //通知浏览器以attachment(下载方式)打开图片

        headers.set(filen, null);

        headers.setContentDispositionFormData("attachment", downloadFileName);

        //application/octet-stream:二进制流数据(最常见的文件下载)

        headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);

        //201 HttpStatus.CREATED

        return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file), headers,HttpStatus.CREATED);    

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: