Java中实现文件下载通用方式
文件下载只需要四步:
1.设置文件ContentType类型
response.setContentType("multipart/form-data");
2.设置文件头
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
3.通过response获取ServletOutputStream对象(out)
InputStream inputStream = xxxxx.downloadFile(fileName);
4.写到输出流(out)中
IOUtils.copy(inputStream, response.getOutputStream());
inputStream.close();
下面给出代码块,亲测可执行:
1.基于OSS实现文件下载
@RequestMapping(value = "/ossDown",method = RequestMethod.GET)@ResponseBody@SneakyThrowspublic void ossDown(@RequestParam("bucketName") String bucketName,@RequestParam("fileName") String fileName, HttpServletResponse response){response.setContentType("multipart/form-data");response.setHeader("Content-Disposition", "attachment;filename=" +URLEncoder.encode(fileName, "UTF-8"));InputStream inputStream = ossComponent.downloadFile(bucketName, fileName);IOUtils.copy(inputStream, response.getOutputStream());inputStream.close();}
OSS执行组件部分,亲测可行,获取直达地址
2.基于minIO实现文件下载
/*** 下载文件* @param fileName* @param response* @throws Exception*/@RequestMapping(value = "/minioDown",method = RequestMethod.GET)@ResponseBody@SneakyThrows(Exception.class)public void minioDown(@RequestParam("fileName") String fileName, HttpServletResponse response)throws Exception {ObjectStat stat = minioUtils.statObject("peach", fileName);response.setContentType(stat.contentType());response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));InputStream in = minioUtils.getObject("", fileName);IOUtils.copy(in, response.getOutputStream());in.close();}
关于minio的Java操作部分,点击直达,亲测可行,可直接项目使用,也可学习
Java中实现文件下载通用方式相关推荐
- JS 和 Java 中URL特殊字符编码方式
前几天遇到url特殊字符编码的问题,在这里整理一下: JavaScript 1. 编码 escape(String) 其中某些字符被替换成了十六进制的转义序列. 解码 unescape(String ...
- opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类 参考文章: (1)opengl中的Floatbuffer和 ...
- java中的异常处理代码,java_深入剖析Java中的各种异常处理方式,1. 调试追踪代码:public s - phpStudy...
深入剖析Java中的各种异常处理方式 1. 调试追踪代码: public static void enterTryMethod() { System.out.println("enter a ...
- java数组初始化的方式,java中初始化数组的方式有几种
java中初始化数组的方式有几种 发布时间:2020-06-01 16:12:45 来源:亿速云 阅读:153 作者:鸽子 三种初始化方式: 1.静态初始化:创建+赋值 2.动态初始化:先创建再赋值 ...
- java中常见跳出循环的方式总结
java中常见跳出循环的方式一般有两种,一种是常用的break,continue,return方式:另一种是循环标记的方式. 方式一:break,continue,return方式 案例: break ...
- 关于Java中的Map遍历方式比较
最近在看阿里巴巴最新版的Java开发手册,里面的内容还是很值得去阅读学习,下面是我对Java中Map的遍历方式的比较和总结: 第一种:使用entrySet()的形式来遍历,也是效率高,推荐使用的一种遍 ...
- java中的Map遍历方式总结
java中的Map遍历方式总结 import java.util.HashMap; import java.util.Iterator; import java.util.Map;public cla ...
- java中的多线程使用方式
文章目录 1 场景 2 直接创建线程 2.1 Thread创建线程 2.2 Runnable创建线程 2.3 Callable创建线程 3 自定义线程池 3.1 关于线程池 3.1 工具类创建 3.2 ...
- java 中线程的创建方式
如果说在java中创建线程的有几种方式的话,归根结底我认为就两种方式 1.继承Thread类,重写run方法 继承Thread类,如下图重写了run()方法 通过start()方法来启动线程 最后的输 ...
最新文章
- git的简单使用(一些小操作,持续更新)
- what should you do at the new arrival of the place
- 计算机图形学应用场景,计算机图形学: 应用Java 2D和3D
- atlas怎么看日志_亿级的日志治理!微服务最佳方案,ELK stack从零搭建
- MaxCompute Spark 资源使用优化祥解
- 对团队成员公开感谢博客
- verilog赋多位值_Verilog入门学习笔记——第一弹
- linux 文件夹换用户组,Linux-用户管理和用户组管理
- 全国计算机等级考试题photoshop,全国计算机等级考试之一级Photoshop试题
- 2019如何新建流程图_如何用ppt制作海报和流程图
- python连接sap接口_python 连接SAP的方法
- vue-echarts教程
- 【python】chardet函数用法
- 助教日志—请沈航13级同学将GIT地址和CNBLOG地址发到这篇博文的评论中
- cad详图怎么画_CAD的图框应该怎么画? - CAD自学网
- 序列号生成-模拟windows office序列号
- java公路赛_为什么Java公路车总被黑?
- Android5.1浏览器证书问题
- 【在线电子书转换】云展网教程 | 如何设置电子书的翻页速度?
- 运用python简单的画圆