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

 更新时间:2024年01月16日 09:38:20   作者:菜鸟程序猿、  
这篇文章主要介绍了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();
        }
    }

到此这篇关于Java返回文件时为图片或pdf等设置在线预览或下载的文章就介绍到这了,更多相关java pdf在线预览或下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Cloud Feign的使用案例详解

    Spring Cloud Feign的使用案例详解

    Feign是Netflix开发的⼀个轻量级RESTful的HTTP服务客户端(⽤它来发起请求,远程调⽤的),是以Java接⼝注解的⽅式调⽤Http请求,Feign被⼴泛应⽤在Spring Cloud 的解决⽅案中,本文给大家介绍Spring Cloud Feign的使用,感兴趣的朋友一起看看吧
    2023-02-02
  • 使用SpringBoot+EasyExcel+Vue实现excel表格的导入和导出详解

    使用SpringBoot+EasyExcel+Vue实现excel表格的导入和导出详解

    这篇文章主要介绍了使用SpringBoot+VUE+EasyExcel 整合导入导出数据的过程详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • java定位死锁的三种方法(jstack、Arthas和Jvisualvm)

    java定位死锁的三种方法(jstack、Arthas和Jvisualvm)

    这篇文章主要给大家介绍了关于java定位死锁的三种方法,分别是通过jstack定位死锁信息、通过Arthas工具定位死锁以及通过 Jvisualvm 定位死锁,文中还介绍了死锁的预防方法,需要的朋友可以参考下
    2021-09-09
  • java通过Idea远程一键部署springboot到Docker详解

    java通过Idea远程一键部署springboot到Docker详解

    这篇文章主要介绍了java通过Idea远程一键部署springboot到Docker详解,Idea是Java开发利器,springboot是Java生态中最流行的微服务框架,docker是时下最火的容器技术,那么它们结合在一起会产生什么化学反应呢?的相关资料
    2019-06-06
  • Java 反射机制详解及实例代码

    Java 反射机制详解及实例代码

    本文主要介绍Java 反射机制的知识,这里提供示例代码帮助大家学习理解此部分知识,有需要的小伙伴可以参考下
    2016-09-09
  • 详解java8在Collection中新增加的方法removeIf

    详解java8在Collection中新增加的方法removeIf

    这篇文章主要介绍了详解java8在Collection中新增加的方法removeIf的相关资料,需要的朋友可以参考下
    2018-01-01
  • Spring的IOC控制反转详解

    Spring的IOC控制反转详解

    这篇文章主要为大家介绍了Spring的IOC控制反转,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助<BR>
    2022-01-01
  • Java之 TreeSet的详细使用说明

    Java之 TreeSet的详细使用说明

    这篇文章主要介绍了Java之 TreeSet的详细使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • POI导出之Excel实现单元格的背景色填充问题

    POI导出之Excel实现单元格的背景色填充问题

    这篇文章主要介绍了POI导出之Excel实现单元格的背景色填充问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Java中如何正确重写equals方法

    Java中如何正确重写equals方法

    Object类中equals方法比较的是两个对象的引用地址,只有对象的引用地址指向同一个地址时,才认为这两个地址是相等的,否则这两个对象就不相等
    2021-10-10

最新评论