Http实现文件下载
HttpServlet实现下载文件,重要的设置header,否则浏览器无法解析为下载。
Header示例:
1:response.setContentType("application/pdf");//说明实体主体内容的媒体类型
2:response.addHeader("Content-Disposition","attachment; filename=" + URLEncoder.encode(file.getName(), "UTF-8"));//文件解析为下载还是内嵌显示
3:response.setHeader("Content-Length", String.valueOf(length)); //表示实体主体部分的大小
如下示例:
package com.daxin;import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class DownLoadFile*/ public class DownLoadFile extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#HttpServlet()*/public DownLoadFile() {super();// TODO Auto-generated constructor stub }/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {File file = new File("C:\\Coding\\servlet_fie_upload\\aa.flv");if (file.exists()) {FileInputStream in = new FileInputStream(file);// 1:设置http header信息为pdf解析方式// response.setContentType("application/pdf");// 1.设置文件ContentType类型,这样设置,会自动判断下载文件类型response.setContentType("multipart/form-data"); //相对比较通用 response.addHeader("Content-Disposition","attachment; filename=" + URLEncoder.encode(file.getName(), "UTF-8"));response.setHeader("Content-Length", String.valueOf(in.available()));// 2:BufferedInputStream br = null;BufferedOutputStream bw = null;try {br = new BufferedInputStream(in);bw = new BufferedOutputStream(response.getOutputStream());byte[] buffer = new byte[1024];int bufferSize = 0;while (-1 != (bufferSize = br.read(buffer))) {bw.write(buffer, 0, bufferSize);}} catch (Exception e) {e.printStackTrace();} finally {if (bw != null)bw.close();if (in != null)in.close();if (br != null)br.close();}}}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doGet(request, response);}}
1: Web开发中下载文件时,我们一般设置Content-Disposition告诉浏览器下载文件的名称,是否在浏览器中内嵌显示. Content-disposition: inline; filename=foobar.pdf表示浏览器内嵌显示一个文件
2:Content-disposition: attachment; filename=foobar.pdf表示会下载文件
前端页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <%String path = request.getContextPath();String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()+ path + "/"; %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <base href="<%=basePath%>"> <title>Insert title here</title> </head> <body><a href="DownLoadFile">下载文件</a> </body> </html>
转载于:https://www.cnblogs.com/leodaxin/p/7510563.html
Http实现文件下载相关推荐
- ini文件怎么使用_ftp文件下载工具,ftp文件下载工具是怎么使用的?使用指南
ftp文件下载工具是什么工具,可能有人会回答说不知道,因为一般只有从事网站管理的工作者会使用的多一点.但不是每个人生来就会的,所以刚开始肯定都会学习怎么使用.这篇文章就来教一下大家ftp文件下载工具是 ...
- 在ASP.NET中跟踪和恢复大文件下载
在Web应用程序中处理大文件下载的问题一直出了名的困难,因此对于大多数站点来说,如果用户的下载被中断了,它们只能说悲哀降临到用户的身上了.但是我们现在不必这样了,因为你可以使自己的ASP.NET应用程 ...
- Apache,Nginx,Lighttpd分别使用X-sendfile功能提升文件下载性能
关于mod_xsendfile https://tn123.org/mod_xsendfile/ Lighttpd中的X-sendfile RoR网站如何利用lighttpd的X-sendfile功能 ...
- java 文件下载 【学习记录】
工具类 public static Boolean downloadExcelFile(HttpServletResponse response, String fileName) {OutputSt ...
- python写一个文件下载器_Python3使用TCP编写一个简易的文件下载器
原标题:Python3使用TCP编写一个简易的文件下载器 利用Python3来实现TCP协议,和UDP类似.UDP应用于及时通信,而TCP协议用来传送文件.命令等操作,因为这些数据不允许丢失,否则会造 ...
- node简单实现excel文件下载
1.利用csv格式兼容实现 csv是一种利用','.'\t'.'\n'等分隔符存储的文本文件,excel可兼容打开,利用此原理,代码实现如下: app.use(route.get('/export', ...
- java ftp下载文件源码_java实现ftp文件下载的源代码
这几天做的一个项目中用到了ftp文件传输,用java实现了ftp文件的下载. 一.win7下搭建ftp服务器 详见:http://jingyan.baidu.com/article/4b52d7026 ...
- 使用C++基于Socket编程实现文件下载(改进-封装成类)
使用: (1)首先运行服务端,待服务端运行起来: (2)最后运行客户端,输入要传输文件到哪个目标机器的IP地址: (3)输入传输文件的路径及文件(完成的路径),其中包含文件的类型,也就是后缀需要包含( ...
- 使用C++基于Socket编程实现文件下载
使用: (1)首先运行服务端,待服务端运行起来: (2)最后运行客户端,这里使用目标机器IP地址是本机: (3)输入下载文件的路径及文件(完成的路径),其中包含文件的类型,也就是后缀需要包含(代表需要 ...
- struts2的文件上传和文件下载
实现使用Struts2文件上传和文件下载: 注意点: (1)对应表单的file1和私有成员变量的名称必须一致 <input type="file" name="fi ...
最新文章
- tomcat访问webapp下面工程的文件含有软连接
- Linux网络服务_邮件服务器-Redhat Enterprise 5.9
- Maven学习总结(16)——深入理解maven生命周期和插件
- 2021年已经过去了4天,创业者、负债累累而希望通过再创业实现东山再起者,你们准备的怎么样了?
- DataGrid相邻行有相同内容时对指定列合并和C#可以实现DLL库的动态调用
- [Python3] 010 字符串:给你们看看我的内置方法 第二弹
- 病毒周报(081208至081214)
- 《深入理解计算机系统》第七章学习笔记
- SQL数据分析之基础语法的注意事项与妙用【MySQL补充】
- Springboot 集成 Camunda
- spring aop分析(一)
- Sketch for Mac (矢量绘图软件) v81.1
- ios 常用的30个动画效果
- 用python做一张图片_用 Python 生成一张有“内涵”的图片
- speedoffice(word)如何修改段落间距
- 工业机器人 郝卫东_智能保安巡逻机器人论文
- 使用jQuery制作图书简介
- android从入门到精通-项目实战(心得及源码)
- 基于JavaSwing开发模拟电梯系统+分析报告 课程设计 大作业源码
- LoadLibrary下错误返回126错误码排查过程
热门文章
- 0-13 sudo用户管理
- 《延世大学韩国语教程2》第十九课 生病(下)
- java单例模式和HashMap的线程安全
- 计算机的各种英语名称,计算机设备名称英语词汇
- python 爬取网页内容 snmp_python通过SNMP协议收集服务器监控信息
- RocketMQ(十三)——实战-普通消息的发送与消费
- 数据分析与挖掘建模实战001:导学,概述
- 河北省计算机网络技术专接本考什么,河北计算机专接本考什么
- matlab 0x1表示什么意思,(x ^ 0x1)!= 0是什么意思?(What does (x ^ 0x1) != 0 mean?)
- 鸿蒙设备开发环境搭建-2021-3