文件下载,预览controller

  @ApiOperation(value = "文件下载")@ApiImplicitParam(name = "fileId", value = "文件fileId", required = true)@GetMapping(value = "/download/{fileId}")public Result<String> download(@PathVariable String fileId) throws Exception {FileInfo fileInfo = fileInfoService.getFileById(fileId);if (fileInfo == null) {return Result.failure(ResultCode.DATA_IS_WRONG);}String userAgent = request.getHeader("User-Agent");String fileName = fileInfo.getFileName() + "." + fileInfo.getFileSuffix();if (userAgent != null && (userAgent.contains("MSIE") || userAgent.contains("Trident"))) {fileName = URLEncoder.encode(fileName, "UTF-8");} else {fileName = new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);}response.setHeader("Content-Disposition", String.format("attachment; fileName=\"%s\"", fileName));response.setHeader("Content-Length", Long.toString(fileInfo.getFileSize()));response.setCharacterEncoding("UTF-8");FileInputStram io = new FileInputStream(new File(fileInfo.getStorePath()));IOUtils.copy(io, response.getOutputStream());return null;}@ApiOperation(value = "文件预览")@ApiImplicitParam(name = "fileId", value = "文件fileId", required = true)@RequestMapping(value = "/preview/{fileId}", method = RequestMethod.GET)public void downLoad1(@PathVariable String fileId) throws Exception {FileInfo fileInfo = fileInfoService.getFileById(fileId);if (fileInfo == null) {return;}try {Path path = Paths.get("." + fileInfo.getFileSuffix());response.setContentType(Files.probeContentType(path));} catch (IOException e) {response.setContentType("application/octet-stream");}response.setCharacterEncoding("UTF-8");FileInputStram io = new FileInputStream(new File(fileInfo.getStorePath()));IOUtils.copy(io, response.getOutputStream());}
//音视频在线预览分段下载
@ApiOperation(value = "文件分段预览")@ApiImplicitParam(name = "fileId", value = "文件fileId", required = true)@RequestMapping(value = "/previewRange/{fileId}", method = RequestMethod.GET)public void previewRange(@PathVariable String fileId, @RequestHeader HttpHeaders headers, HttpServletResponse response) throws Exception {FileInfo fileInfo = fileInfoService.getFileById(fileId);if (fileInfo == null) {return;}response.setContentType(new Tika().detect("." + fileInfo.getFileSuffix()));response.setHeader("Accept-Ranges", "bytes");long start = 0L;Long end = null;List<HttpRange> ranges = headers.getRange();if (ranges.size() > 0) {HttpRange range = ranges.get(0);response.setStatus(HttpStatus.PARTIAL_CONTENT.value());//续传响应码为206start = range.getRangeStart(fileInfo.getFileSize());end = range.getRangeEnd(fileInfo.getFileSize());response.setHeader("Content-Length", String.valueOf(end - start + 1));response.setHeader("Content-Range", "bytes " + start + "-" + end + "/" + fileInfo.getFileSize()); //设置范围可以拖动进度条分段预览} else {response.setStatus(HttpStatus.OK.value());response.setHeader("Content-Length", Long.toString(fileInfo.getFileSize()));}FileInputStram io = new FileInputStream(new File(fileInfo.getStorePath()));IOUtils.copy(io, response.getOutputStream());

java文件在浏览器下载和预览相关推荐

  1. a标签下载文件,浏览器变打开预览的解决方案

    前景: 处理接口返回的文件链接需要下载,例如http://xxxxx/xxx.jpeg,使用a标签进行下载时(加了download),浏览器对这些类型的文件可以解析,还会打开这个文件在浏览器上进行预览 ...

  2. struts上传word和excel文件到oracle,Struts文件上传,下载,重传,预览

    [Struts2]☆★之文件上传,下载,重传,预览 今日群里一兄弟问我能否给一份struts文件上传下载的例子,因为自己项目比较紧所以想在网上找 些源码给他,但是纵观全网,写的都不是太全,这让新手使用 ...

  3. charm浏览器下载网页预览PDF文件

    进入网页开发者页面,寻找可直接下载的PDF源文件 (简单有效.无限制) 1.浏览器打开网页(建议用谷歌浏览器打开): 2.点击鼠标右键,选择[检查] ,或者按Crtl+shift+I快捷键: 3.进入 ...

  4. download.js 实现txt,js文件等浏览器下载 而不是打开

    现在本人正在做聊天系统,最近支持收发文件,那下载当然是不可避免的 1.第一步想的是open一个窗口下载文件但事实证明显然不合适,现在的浏览器都是会主动拦截弹窗 2.a通过download属性通知浏览器 ...

  5. 文件上传,下载,预览,删除(File),分页接口

    文件上传,下载,预览,删除(File) 1.公共参数方法 1.1公共返回类型定义 1.2 分页接口 1.3公共实体类 1.4 公共的 mapper.java/xml(都放在一起) 1.4.1 File ...

  6. SpringBoot+MongoDB GridFS文件上传、下载、预览实战

    SpringBoot + MongoDB GridFS 随着web 3.0的兴起,数据的形式不局限于文字,还有语音.视频.图片等.高效存储与检索二进制数据也成为web 3.0必须要考虑的问题.然而这种 ...

  7. 浏览器点击pdf的链接——实现下载或预览功能——基础积累

    最近在做后台管理系统时,遇到了一个需求,就是点击pdf链接时,需要实现文档的下载. 点击链接,通常就会用到a标签,将链接放在href参数中,点击时就会触发相应的事件了. 常规写法如下: <a : ...

  8. Java如何实现文档在线预览+下载

    Java如何实现文档在线预览+下载 看了好多转换预览的,但是感觉都比较麻烦,所以自己就简单写了个. FileController接收需要预览的文件,替换filePath,如果是要在linux环境下运行 ...

  9. PDF.js + Vue 浏览器以只读方式打开PDF,后台返回文件流,前端实现预览pdf

    如果你想光前端完成 office(xls,doc,ppt) 文件的预览,只能提供你这些库来使用 PDF http://mozilla.github.com/pdf.js/ XLS https://gi ...

  10. base64格式(pdf/word/ppt等)文件的下载与预览

    后端返回base64格式的文件数据,前端根据接收的数据进行转换后实现对文件的下载和预览方法: // 附件下载 这里的的data就是content数据 const downloadAttach = (i ...

最新文章

  1. Java分布式内存开源实现:Hazelcast
  2. linux tcp文件分包_Linux网络监控工具大点兵
  3. 超级棒的170+款web前端开发工具汇总,千万要收藏好!
  4. typescript索引类型_TypeScript的索引类型与映射类型,以及常用工具泛型的实现
  5. JavaScript中数组slice和splice的对比小结
  6. ehcache rmi_EhCache复制:RMI与JGroups
  7. linux关闭远程服务器,linux – 远程主机关闭SSH连接
  8. linux防火墙查看被动模式,Centos7搭建vsftpd及被动模式下的防火墙设置
  9. 为什么6lowpan 要有四个地址_大型监控网络系统如何规划ip地址
  10. Springboot2Web原生组件注入
  11. iOS 搭建XMPP环境时添加依赖库报错及解决
  12. hadoop 3.x 关闭安全模式
  13. idea整个项目乱码解决办法
  14. 六合彩:Linux基金会项目合体之后会更精彩吗?
  15. redis key 操作大全
  16. 物联网平台建设调研报告
  17. 使用liteide开发go问题收集
  18. python颜色对照表及颜色搭配
  19. ALPS磁式传感器和轴地磁式传感器
  20. configure error:Package requirements (openssl) were not met

热门文章

  1. 中国轨道交通设备行业建设投资规模及十四五产量趋势研究报告2021-2027年版
  2. spark初始:spark腾讯雅虎优酷成功应用解析
  3. android调用录音编程,Android 调用MediaRecorder录音
  4. 如何操作电脑压缩包解压文件?干货技巧!电脑压缩包怎样进行文件解压?
  5. linux批量解压压缩包
  6. c# 获取数字的小数位数
  7. 在线代理(Web ProxyServer)完全详解
  8. 计算机术语int,整型(计算机语言)_百度百科
  9. 沉浸式体验,文化与科技融合创新的新业态
  10. c语言数学函数指数,C语言数学函数参考表