控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

浏览器文件下载和图片显示(流形式)

作者:未知 出处:cnblog 2013年04月25日 阅读:

 浏览器文件下载:如果你想在浏览器中实现下载功能--一些原本不默认下载的文件,如:jpg、xml等。

 
图片显示(流形式):如果你想在浏览器中显示图片,而图片不是一个静态文件(没有url地址)
 
那我们应该怎么做呢?
 
分析:
 
浏览器获得文件是通过http协议的,
 
所以只要我设置好请求(request)返回的响应(response)的一些信息应该就行了,
 
那就是设置响应(response)头的一些信息喽。
 
解决:
 
浏览器文件下载设置:
 
Content-Type:application/octet-stream           // 未分类的二进制数据
 
Content-Disposition:attachment;filename=yourFileName  //附件形式处理,文件名为yourFileName
 
Content-Length:yourFile.length               //文件的大小
 
而文件以流形式输出为浏览器就行了。
 
这样浏览器就能识别该文件是通过附件的形式下载的了。
 
java的servlet代码:
 
 
public HttpServletResponse getFile(String path,HttpServletRequest request, HttpServletResponse response) {
        try {
            File file = new File(request.getRealPath("/")+"/"+path);
            String filename = file.getName();
 
            InputStream fis = new BufferedInputStream(new FileInputStream(file));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
 
            response.reset();
            // 设置response的Header
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("utf-8"),"ISO-8859-1"));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return response;
    } 
 
图片(流形式)显示设置:
 
Content-Type:image/jpeg                // jpeg、jpg、jpe、jfif形式的图片
 
Content-Length:yourImg.length              //图片大小
 
而图片以流形式输出为浏览器就行了。
 
java的servlet代码:
 
 
public HttpServletResponse getImage(String path,HttpServletRequest request, HttpServletResponse response) {
        try {
            File file = new File(request.getRealPath("/")+"/"+path);
            String filename = file.getName();
 
            InputStream fis = new BufferedInputStream(new FileInputStream(file));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
 
            response.reset();
            // 设置response的Header            
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("image/jpeg");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return response;
    }这样浏览器就能正确识别该图片,并在浏览器中识别出来。
 
当然也可以是img标签的src中显示。
 

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统