主页 > 手机  > 

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等设置在线预览或下载