JAVA文件下载,页面显示另存为效果

经过测试  firefox、QQ、IE 浏览器是可以的  chrome浏览器不行(直接下载了)

1. 系统框架springmvc+jsp

2. 后台servlet代码

@RequestMapping("download")
    public void download(HttpServletRequest request,HttpServletResponse response){
        BufferedInputStream dis = null;
        BufferedOutputStream fos = null;

        String urlString = request.getParameter("urlString");
        String fileName = urlString.substring(urlString.lastIndexOf(‘/‘) + 1);

        try {

            URL url = new URL(urlString);
            //response.setContentType("application/x-msdownload;");
            response.setContentType("application/octet-stream");
            response.setHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
            response.setHeader("Content-Length", String.valueOf(url.openConnection().getContentLength()));

            dis = new BufferedInputStream(url.openStream());
            fos = new BufferedOutputStream(response.getOutputStream());

            byte[] buff = new byte[2048];
            int bytesRead;
            while (-1 != (bytesRead = dis.read(buff, 0, buff.length))) {
                fos.write(buff, 0, bytesRead);
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (dis != null)
                try{
                    dis.close();
                }catch (Exception e){
                    e.printStackTrace();
                }
            if (fos != null)
                try{
                    fos.close();
                }catch (Exception e){
                    e.printStackTrace();
                }

        }
    }

3. 页面jsp代码

<input type="button" onclick="downloadImage()" value="下载">

<script>
   function downloadImage(){
       var urlString = "http://pic32.nipic.com/20130829/12906030_124355855000_2.png";
       //跳转到后端控制器
       location.href="${ctx}/guest/download.do?urlString="+urlString;
   }
</script>

4. 下载效果1(firefox)

下载效果2(QQ)

时间: 2024-08-01 15:20:03

JAVA文件下载,页面显示另存为效果的相关文章

java 页面显示混乱问题

最近做一个项目,里面的页面引用了很多样式和js,部署运行后,在IE浏览器上显示页面,登录页面布局全乱掉了,费了大半天力气,发现是因为:IE调试工具下,文本模式选中的是Quirks模式,于是上网搜了一下什么是Quirks模式,看到了http://blog.csdn.net/garcon1986/article/details/5839144上的这篇文章,忽然有了灵感,原来是velocity页面上没有doctype声明,“在doctype声明中,没有使用DTD声明或者使用HTML4以下(不包括HTM

我爱Java系列---【SpringMVC传统方式的文件上传和前端获取数据库图片在页面显示】

一.文件上传 说明:传统方式的文件上传,指的是我们上传的文件和访问的应用存在于同一台服务器上.并且上传完成之后,浏览器可能跳转. 1. 第一步:创建 maven 工程并导入 commons-fileupload 坐标 1 <dependency> 2 <groupId>commons-fileupload</groupId> 3 <artifactId>commons-fileupload</artifactId> 4 <version&g

Android中使用ViewPager实现屏幕页面切换和页面轮播效果

之前关于如何实现屏幕页面切换,写过一篇博文<Android中使用ViewFlipper实现屏幕切换>,相比ViewFlipper,ViewPager更适用复杂的视图切换,而且Viewpager有自己的adapter,这也让其适应复杂对象,实现数据的动态加载. ViewPager是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而viewpager就是其中之一,利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等. 下面我们就展示下Vie

jQuery框架+DWR框架实现的Java Web中的Ajax效果(异步请求,局部刷新)

一 简介和实现效果 这里用一个小例子来简单举例说明,做一个搜索引擎搜索提示效果,通过不断输入字符,然后在下方给出搜索提示.效果图如下: 通过上图可以看到,当输入一个"a"时,提示了很多内容,然后继续输入一个"e"后,提示的范围明显就变小了. 注:在文末我会给出完整源代码的下载链接,以供大家参考 二 具体实现 1 在eclipse for java ee中创建一个Java Web工程,然后导入相应的jar包,特别说明的是:这里要导入一个额外的dwr.jar.也就是说,

jsp——java服务页面

1 Jsp基础 1.1 什么是JSP? JSP,Java Server Page    Java服务页面. html页面: 用html语言写页面 Jsp页面: 用html语言写页面,用java语言写业务逻辑 Jsp的特点: 既可以写html代码,也可以写java代码. 1.2 Jsp的作用 Jsp的主要作用是用java语言来开发动态资源的技术. 1.3 Jsp的运行 servlet: servet程序交给tomcat服务器运行 Jsp:jsp页面交给tomcat服务器运行. jsp在%tomca

页面侧滑栏效果

效果图:使用侧滑栏属性将两个页面组合起来,显示侧滑效果 首先:设置左边页面的布局: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_widt

如何在jsp页面显示存储在数据库的图片

1.从数据库中查找图片的二进制数据,把查找出来的数据set到会话中 request.getSession().setAttribute("img",图片的二进制数据 ); 2.把数据write到流里 1 package cn.jbit.auction.web.servlet; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.Htt

javascript超过容器后显示省略号效果(兼容一行或者多行)

javascript超过容器后显示省略号效果 在实际的项目中,由于文字内容的长度不确定性和页面布局的固定性,难免会出现文字内容超过div(或其他标签,下同)区域的情况,此时比较好的做法就是当文字超过限定的div宽度后自动以省略号(…)显示,这样,按照习惯,人们都会知道这儿有文字被省略了.css中有个属性叫做text-overflow:ellipsis;比如使用css可以这样写: {width:27em; white-space:nowrap; text-overflow:ellipsis; -o

Ajax+Servlet+jsp显示搜索效果

一.Ajax简介Ajax被认为是(Asynchronous JavaScript and XML)的缩写,允许浏览器与服务器通信而无需刷新当前的页面的技术都被叫做Ajax eg:百度搜索.实时地图.etc,在Ajax模型中,数据在客户端与服务器之间独立传输,服务器用不刷新整个页面便可更新数据: 二.Ajax的工作原理图 三.Ajax发送和接收相应的方法1.发送请求相应的方法1).onreadystatechange事件处理函数:该函数由服务器触发而不是用户,每次readyState属性的改变都会