java、javascript实现附件下载

在web开发中,经常需要开发“下载”这一模块,以下给出一个简单的例子。

在服务器端,使用java开发:

@RequestMapping(value = "download.html", method = RequestMethod.GET)
    public void download(String resourceid, HttpServletRequest request, HttpServletResponse response) {
       response.setContentType("charset=UTF-8"); 
       File file = new File(path);
       response.setHeader("Content-Disposition", "attachment; filename=a");
       BufferedInputStream bis = null;
       BufferedOutputStream bos = null;
       OutputStream fos = null;
       InputStream fis = null;
       try {
            fis = new FileInputStream(file.getAbsolutePath());
            bis = new BufferedInputStream(fis);
            fos = response.getOutputStream();
            bos = new BufferedOutputStream(fos);
            int bytesRead = 0;
            byte[] buffer = new byte[5 * 1024];
            while ((bytesRead = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, bytesRead);
            }
            bos.flush();
        }catch(E e){
        }finally {
            try {
                bis.close();
                bos.close();
                fos.close();
                fis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

当我们在前端请求这个地址时,服务器先找出文件,设置响应头,然后通过流输出到浏览器端。

浏览器在头中发现该响应的主体是流文件,则自动会调用另存为的窗口,让用户保存下载。

这里有个关键就是Content-Disposition这个头属性,Content-Disposition是MIME协议的扩展,用于指示如何让客户端显示附件的文件。

它可以设置为两个值:

inline //在线打开

attachment //作为附件下载

这里我们设置的值为attachment,所以可以被识别为附件并下载。

上面讲了如何写服务器端,下面讲前端如何请求。

前端请求有三种方式:

1.Form

<form action=‘download.html‘ method=‘post‘>
    <input type=‘submit‘/>
</form>

2.iframe

var iframe = "<iframe style=‘display:none‘ src=‘download.html‘></iframe>"
body.append(iframe);

?当iframe被append到body中时,会自动请求下载链接。

3.open

window.open("download.html");

?

java、javascript实现附件下载

时间: 2024-10-16 12:09:39

java、javascript实现附件下载的相关文章

Crosswalk+Cordova开发安卓app之 JavaScript调用java (附源代码下载)

 Crosswalk+Cordova开发安卓app之 JavaScript调用java (附源代码下载) 定义js回调接口 /** * js回调接口 * * @author graceup * */ public class JsInterface { public JsInterface() { } @JavascriptInterface public String sayHello() { // TODO do more thing return "Hello World!";

phonegap 附件下载及打开附件

出处:http://my.oschina.net/u/1011854/blog/169434 再次 谢谢作者! 在开发web app并且使用phonegap的情况下,附件下载着实是一件令人头疼的事,什么window.open或者window.location.href在webview中都不起作用,网上查了许久,没有一篇完整讲述“phonegap附件下载及打开附件”的例子,现在分享一下.     首先,如果你可以接受的话,可以使用一种极其简单的方式来完成,点击操作之后,跳入手机默认浏览器进行下载,

Java项目中的下载 与 上传

使用超级链接下载,一般会在浏览器中直接打开,而不是出现下载框 如果要确保出现下载框下载文件,则需要设置response中的参数: 1是要设置用附件的方式下载 Content-Disposition: attachment; filename = 2要设定内容的MIME类型 Content-Type:application/x-msdownload 下载的页面代码: <!DOCTYPE html> <html> <head> <meta charset="

解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象

原文:解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象 之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的form,还有其他一些form插件也是一样的,使用不当就会遇到这个问题. 前台: <!DOCTYPE html> <html> <head> <meta http-equiv=

android 后台附件下载

在service中通过在oncreat()中开启一个线程,轮训ArrayList<AttachmentTask> 我这个附件下载的任务list ,ArrayList<AttachmentTask> 他维护的是一个当前下载的任务,每当下载完一个移除一个,同时下载完后添加到数据库. /* * @project C6Client * @package com.jh.c6.service * @file DownloadService.java * @version 1.0 * @auth

javamail模拟邮箱功能收取电子邮件-中级实战篇【内容|附件下载方法】(javamail API电子邮件实例)

引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本篇章建议先阅读上一篇  -->javamail模拟邮箱功能发送电子邮件-中级实战篇[新增附件发送方法](javamail API电子邮件实例) 在上一篇中,讲解了邮件发送的两个基本方法(HTML和附件),并且引入了两个新类 Multipart 和 BodyPart 两类,整体结构比较紧凑,邮件的服务

Atitit.实现继承的原理and方法java javascript .net c# php ...

Atitit.实现继承的原理and方法java javascript .net c# php ... 1. 实现继承的问题 1 2. 如何拷贝基类方法?采用prototype原型方式,通过冒充对象 1 3. 2.属性如何继承? 2 4. 几种继承方式的比较    2 5. 常用的apply ,call方法 3 6. 参考 3 1. 实现继承的问题 JavaScript中要实现继承,其实就是实现三层含义: 1.子类的实例可以共享父类的方法: 2.子类可以覆盖父类的方法或者扩展新的方法: 3.子类和

Python 实现 Discuz论坛附件下载权限绕过漏洞

背景:最近压力有些大,想玩点游戏放松下,去Mac论坛下载,发现需要各种权限,于是蛋疼了. 所以,上网查了discuz! x3.1破解,手动替换,发现出现“链接已过期”.所以写了下面程序. 0.将下列代码复制到你的python IDE中. 1.先进网页,chrome浏览器查看网页元素,替换正则表达式内内容. 2.刷新你要下载的页面,右键复制下载链接 url = ‘你复制的链接’ 3.运行python,你的IDE里面就会打印出真实下载地址. 运行环境:python3.5 操作系统:macpro 20

[Java] Java API文档下载方法

Java API文档下载方法:http://jingyan.baidu.com/article/a3aad71ac9e48fb1fb009692.html Oracle : http://www.oracle.com/index.html