java、javascript实现附件下载示例

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

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

01 @RequestMapping(value = "download.html", method = RequestMethod.GET) 
02 public void download(String resourceid, HttpServletRequest request, HttpServletResponse response) { 
03 response.setContentType("charset=UTF-8"); 
04 File file = new File(path); 
05 response.setHeader("Content-Disposition", "attachment; filename=a"); 
06 BufferedInputStream bis = null; 
07 BufferedOutputStream bos = null; 
08 OutputStream fos = null; 
09 InputStream fis = null; 
10 try { 
11 fis = new FileInputStream(file.getAbsolutePath()); 
12 bis = new BufferedInputStream(fis); 
13 fos = response.getOutputStream(); 
14 bos = new BufferedOutputStream(fos); 
15 int bytesRead = 0; 
16 byte[] buffer = new byte[5 * 1024]; 
17 while ((bytesRead = bis.read(buffer)) != -1) { 
18 bos.write(buffer, 0, bytesRead); 
19
20 bos.flush(); 
21 }catch(E e){ 
22 }finally { 
23 try { 
24 bis.close(); 
25 bos.close(); 
26 fos.close(); 
27 fis.close(); 
28 } catch (IOException e) { 
29 e.printStackTrace(); 
30
31
32 }

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

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

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

它可以设置为两个值:

inline //在线打开

attachment //作为附件下载

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

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

前端请求有三种方式:

1.Form

1 <form action='download.html' method='post'> 
2 <input type='submit'/> 
3 </form>

2.iframe

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

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

3.open

1 window.open("download.html");
时间: 2024-09-14 21:09:48

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

java、javascript实现附件下载示例_javascript技巧

在web开发中,经常需要开发"下载"这一模块,以下给出一个简单的例子. 在服务器端,使用java开发: @RequestMapping(value = "download.html", method = RequestMethod.GET) public void download(String resourceid, HttpServletRequest request, HttpServletResponse response) { response.setCo

java压缩文件和下载图片示例_java

本文实例为大家分享了java压缩文件和下载图片示例,供大家参考,具体内容如下 主页面index.xml <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> <title>项目的主页</title> </head> <body> <h2>主页

java中Struts2 的文件上传和下载示例_java

文件上传 表单准备 要想使用 HTML 表单上传一个或多个文件 须把 HTML 表单的 enctype 属性设置为 multipart/form-data 须把 HTML 表单的method 属性设置为 post 需添加 <input type="file"> 字段. Struts 对文件上传的支持 在 Struts 应用程序里, FileUpload 拦截器和 Jakarta Commons FileUpload 组件可以完成文件的上传. 步骤: 在 Jsp 页面的文件上

使用Java发送带附件的附件的示例_java

这里使用的是JavaMail技术,前台使用了fckeditor做邮件美化,由于只是示例,后台发送时只是将邮件保存在本地,但是可以查看,如果需要实际发送,请参考我的其他博客文章,我写了很多关于邮件发送的示例! JSP页面页面除了引用fckeditor外,要注意我们是需要发送附件的: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ ta

java上传附件到文件系统

图片,word,text文件在数据库中是不能以varchar2类型存储的,在orca中以clob,blob类型存储.在SqlServer中以img,txt类型存储.把附件存储在数据库中的好处是附件不容易丢失,不过要写入数据库,然后在读出来就有点不方便了.难道一定要把附件存储在数据库中? 可以把附件的相对地址存储在数据库中.附件真真保存在文件系统中.这样很容易读出来: Myproject工程下webroot下有一个目录picture专门用来存储图片 数据库中有一字段tPath存储相对路径如:Str

Java实现上传下载的的功能,比用ftp协议有什么优点

问题描述 Java实现上传下载的的功能,比用ftp协议有什么优点 Function check() //定义一个检查函数{If(document.formAdd.fujian.value=="") //判断fujian是否存在{ Alert("请选择文件"); Return false;}Return ture;}public String upload(){ ... File dstFile = new File(dstPath); //在给定的目录下,创建一个文

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

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

java webservice上传下载文件代码分享_java

本文实例为大家分享了java webservice上传下载文件代码,供大家参考,具体内容如下 1.新建动态web工程youmeFileServer,新建包com,里面新建类FileProgress package com; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.sql.Date; import java.text.Simple

Java文件上传下载、邮件收发实例代码_java

文件上传下载 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组件! FileUpload组件: 1. 下载源码 2. 项目中引入jar文件