首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >下载文件

下载文件

作者头像
星哥玩云
发布于 2022-09-14 13:14:09
发布于 2022-09-14 13:14:09
1.2K00
代码可运行
举报
文章被收录于专栏:开源部署开源部署
运行总次数:0
代码可运行

1、下载概述

下载就是向客户端响应字节数据! 原来我们响应的都是html的字符数据! 把一个文件变成字节数组,使用response.getOutputStream()来各应给浏览器!!!

2、下载的要求

两个头一个流!

Content-Type:

你传递给客户端的文件是什么MIME类型,例如:image/pjpeg

通过文件名称调用ServletContext的getMimeType()方法,得到MIME类型!

Content-Disposition:

它的默认值为inline,表示在浏览器窗口中打开!attachment;filename=xxx

在filename=后面跟随的是显示在下载框中的文件名称! 流:要下载的文件数据!自己new一个输入流即可!该输入流指向的就是要下载的文件!

3、下载演示

download.jsp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  <body>
	<a href="<c:url value='/DownloadServlet'/>">
		下载链接
	</a>
  </body>

DownloadServlet.java

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Download1Servlet extends HttpServlet {
	@Override
	public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		/*
		 * 两个头一个流
		 * 1. Content-Type
		 * 2. Content-Disposition
		 * 3. 流:下载文件的数据
		 */
		String filename = "F:/a.mp3";
		String contentType = this.getServletContext()
				.getMimeType(filename);//通过文件名称获取MIME类型
		String contentDisposition = "attachment;filename=" + a.mp3;
		// 一个流
		FileInputStream input = new FileInputStream(filename);
		
		//设置头
		resp.setHeader("Content-Type", contentType);
		resp.setHeader("Content-Disposition", contentDisposition);
		
		// 获取绑定了响应端的流
		ServletOutputStream output = resp.getOutputStream();
		
		IOUtils.copy(input, output);//把输入流中的数据写入到输出流中。
		
		input.close();
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
14-下载案例
下载案例 HTML文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</ti
Ywrby
2022/10/27
2160
E015Web学习笔记-Request和Respons(三)
如果超链接指向的资源可以被浏览器解析,则会展示在浏览器里面,否则弹出下载框,询问下载;
訾博ZiBo
2025/01/06
1120
E015Web学习笔记-Request和Respons(三)
JavaWeb上传和下载原理及实现
通过观察发现这个的请求体就发生了变化。这种请求体被称之为多部件请求体。 什么是多部件请求体:就是把每一个表单项分割为一个部件。 以请求头的content-type的boundary后面的一串随机字符串作为分割标识 普通表单项:
秋白
2019/02/21
1.5K0
JavaWeb上传和下载原理及实现
Java-Response实现下载文件和验证码
在创建 servlet 时会覆盖 service() 方法,或 doGet()/doPost() ,这些方法都有两个参数,一个为代表请求的 request 和代表响应的 response 。 service 方法中的 response 的类型是 ServletResponse ,而 doGet/doPost 方法的 response 的类型是 HttpServletResponse,HttpServletResponse 是ServletResponse的子接口,功能和方法更加强大。
白衣少年
2022/12/26
5510
Java-Response实现下载文件和验证码
文件的上传和下载
文件的上传和下载,是非常常见的功能,在很多的系统中,或者软件中都经常使用文件的上传和下载。 比如:QQ头像,就使用了上传 邮箱中也有附件的上传和下载的功能
技术交流
2022/11/18
1.6K0
文件的上传和下载
ajax方式下载文件
在web项目中需要下载文件,由于传递的参数比较多(通过参数在服务器端动态下载指定文件),所以希望使用post方式传递参数。 通常,在web前端需要下载文件,都是通过指定<a>标签的href属性,访问服务器端url即可下载并保存文件到本地。 但是这种方式使用的是HTTP GET方法,参数只能通过URL参数方式传递,无法使用POST方式传递参数。 于是,想到使用ajax方式下载文件。
编程随笔
2019/09/11
3.5K0
ajax方式下载文件
jsb和servlet文件下载步骤
package com.example.demo3; import org.apache.commons.io.IOUtils; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Ht
一个风轻云淡
2022/11/13
3770
Java学习之Response篇
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119940.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/13
3020
文件下载实现
实现文件下载步骤 1.获取要下载的文件名 2.读取要下载的文件内容 3.把下载的文件内容返回给客户 4.在回传前,通过响应头告诉客户端返回的数据类型 5.通过响应头告诉客户端收到的数据是要下载的 具体实现 导入 commons-io-1.4.jar包 编写Servlet程序 public class FileUpload extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServl
切图仔
2022/09/14
1K0
SpringBoot集成easyExcel实现按模板导出
官方文档: EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel
一缕82年的清风
2022/07/28
4.6K0
SpringBoot集成easyExcel实现按模板导出
文件的上传与下载
此篇文章,写的内容为文件的上传和下载,先写上传下载的位置为tomcat服务器,后期在填补位置在数据库的。
栖西
2023/10/17
5550
文件的上传与下载
ServletContext对象使用和文件下载案例
* 两种方法获取servletContext对象 * 获取MIME类型 * 设置域对象:共享数据
不愿意做鱼的小鲸鱼
2022/09/24
4920
ServletContext对象使用和文件下载案例
HttpServletResponse
web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象、代表响应的一个 HttpServletResponse对象;
Albert_xiong
2021/06/21
6040
HttpServletResponse
Java Web Servlet (Part D)- File Upload &amp; Download
文件上传和下载是非常常用的功能,很多系统中都会有文件上传和下载,比如附件上传下载,用户头像上传等等
RiemannHypothesis
2022/09/26
5760
Java Web Servlet (Part D)- File Upload &amp; Download
JavaWeb——ServletContext对象的使用及文件下载案例实战
ServletContext代表整个web应用,可以和程序的容器(服务器)来通信,功能如下:
Winter_world
2020/09/25
6380
JavaWeb——ServletContext对象的使用及文件下载案例实战
Java学习笔记-全栈-web开发-12-文件上传和下载
enctype作用:告知服务器请求正文的MIME类型。(请求消息头:与Content-Type作用是一致的)
devi
2021/08/18
4300
Response文件下载
Response文件下载 javaweb 里的知识 觉得这个是学到啦 所以记录下来 方便下一次查看 ---- 简易代码 package com.hui.servlet; import javax.servlet.Servlet; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet
宁在春
2022/10/31
1.3K0
【springboot2.x】实现文件下载
简写了几种下载日志的方法。一、方法一 @ApiOperation("日志下载") @GetMapping("/logDownload") public void download(HttpServletResponse response) { try { String mulu = "d:/logs"; ZipUtil.zip(mulu); String path = "d:/logs.zip";
无敌小菜鸟
2023/02/16
9770
Java下载文件的几种方式
以流的方式下载 public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(path); // 取得文件名。 String filename = file.getName(); /
一觉睡到小时候
2019/09/17
4.2K0
java 如何实现大文件上传下载(传输)各种格式「建议收藏」
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。
全栈程序员站长
2022/09/06
3.6K0
java 如何实现大文件上传下载(传输)各种格式「建议收藏」
相关推荐
14-下载案例
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验