当前位置: 首页 > news >正文

java返回文件时为图片或pdf等设置在线预览或下载

设置Content-Disposition响应头类型

"inline"查看预览 ; "attachment"下载;

inline:表示回复中的消息体会以页面的一部分或者整个页面的形式展示
attchment:以附件形式被下载到本地;

/*** 文件或图片预览/下载工具类* @author zh、* @data 2024/1/11 18:35*/
@Component
@Slf4j
public class FileHttpUtil {/*** 根据物理路径文件 获取 下载/预览 文件* @param file 文件* @param type 设置响应头类型 "inline"查看  "attachment"下载* @param fileName 文件名 * @return 对应类型响应文件*/public static ResponseEntity<?> getResponseEntity(byte[] file , String type , String fileName ){ResponseEntity.BodyBuilder responseEntity = ResponseEntity.ok();HttpHeaders httpHeaders = new HttpHeaders();Tika tika = new Tika();String mediaType = tika.detect(file);httpHeaders.setContentType(MediaType.parseMediaType(mediaType));httpHeaders.setContentDisposition(ContentDisposition.builder(type).filename(URLEncoder.encode(fileName )).build());httpHeaders.setCacheControl(CacheControl.noCache());//httpHeaders.setCacheControl(CacheControl.maxAge(10, TimeUnit.MINUTES));return responseEntity.headers(httpHeaders).body(file );}需要的pom依赖文件<dependency><groupId>org.apache.tika</groupId><artifactId>tika-core</artifactId><version>1.28.4</version></dependency>

接口调用或测试

  /*** 查询文件* @param filePath文件地址 物理路径* @param type 设置响应头类型  "inline"查看  "attachment"下载* @return 响应文件* @throws IOException*/@GetMapping(value = "/file")public ResponseEntity<?> file(String filePath,String type){//根据文件路径去文件服务获取文件File file = new File(filePath);try (FileInputStream fileInputStream = new FileInputStream(file)) {byte[] buf = new byte[fileInputStream.available()];fileInputStream.read(buf);return FileHttpUtil.getResponseEntity(buf, type,file .getName());} catch (IOException e) {e.printStackTrace();}}
http://www.lryc.cn/news/280992.html

相关文章:

  • 微信公众号对接--客服消息
  • 花几分钟整点jmeter花活,轻松超越90%软件测试
  • 类脑研究之脑组成及神经系统相关理论!大脑是什么?大脑和脑有什么区别?大脑皮层和脑膜什么关系?人的神经系统有哪些?
  • 【Vue按键修饰符详细介绍】
  • url 地址中的敏感信息脱敏处理
  • 慢速 HTTP 攻击 Slow HTTP Attack
  • 2024年“计算机视觉处理设计开发工程师”最后几天报考中!
  • 基于ssm的教务信息平台的设计与实现+jsp论文
  • 哪种护眼灯对眼睛好?五款高品质考研台灯推荐
  • 安防视频云平台/可视化监控云平台ARM版EasyCVR无法下载录像文件,如何解决?
  • 如何用Docker部署Nacos服务并结合内网穿透实现公网访问管理界面?
  • Logback框架基本认识
  • 移动安全-certutil
  • 【HarmonyOS4.0】第九篇-ArkUI布局容器组件(一)
  • 在macos上查看当前进程的栈信息
  • 医院患者满意度调查指标设计
  • 2023年全国职业院校技能大赛软件测试赛题—单元测试卷④
  • Open CV 图像处理基础:(一)Open CV 在windows环境初始化和 Java 动态库加载方式介绍
  • 云联接:揭开SD-WAN神秘面纱,颠覆你对网络的认知!
  • 拓展操作(四) 使用nginx反向代理jenkins
  • C语言关于指针函数可变参数的使用方法和打印相应数据
  • centos7下升级openssh9.4p1及openssl1.1.1v版本
  • vue+element弹窗内---下拉框定位问题解决(方法之两种)
  • MATLAB二维与三维绘图实验
  • usb个人总结
  • 进阶Docker2:数据卷和挂载目录
  • SHAP:最受欢迎、最有效的可解释人工智能工具包
  • 语境化语言表示模型-ELMO、BERT、GPT、XLnet
  • 和MATLAB相关的设置断点的快捷键
  • 实人认证(人像三要素)API:加强用户身份验证