java文件在浏览器下载和预览
文件下载,预览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文件在浏览器下载和预览相关推荐
- a标签下载文件,浏览器变打开预览的解决方案
前景: 处理接口返回的文件链接需要下载,例如http://xxxxx/xxx.jpeg,使用a标签进行下载时(加了download),浏览器对这些类型的文件可以解析,还会打开这个文件在浏览器上进行预览 ...
- struts上传word和excel文件到oracle,Struts文件上传,下载,重传,预览
[Struts2]☆★之文件上传,下载,重传,预览 今日群里一兄弟问我能否给一份struts文件上传下载的例子,因为自己项目比较紧所以想在网上找 些源码给他,但是纵观全网,写的都不是太全,这让新手使用 ...
- charm浏览器下载网页预览PDF文件
进入网页开发者页面,寻找可直接下载的PDF源文件 (简单有效.无限制) 1.浏览器打开网页(建议用谷歌浏览器打开): 2.点击鼠标右键,选择[检查] ,或者按Crtl+shift+I快捷键: 3.进入 ...
- download.js 实现txt,js文件等浏览器下载 而不是打开
现在本人正在做聊天系统,最近支持收发文件,那下载当然是不可避免的 1.第一步想的是open一个窗口下载文件但事实证明显然不合适,现在的浏览器都是会主动拦截弹窗 2.a通过download属性通知浏览器 ...
- 文件上传,下载,预览,删除(File),分页接口
文件上传,下载,预览,删除(File) 1.公共参数方法 1.1公共返回类型定义 1.2 分页接口 1.3公共实体类 1.4 公共的 mapper.java/xml(都放在一起) 1.4.1 File ...
- SpringBoot+MongoDB GridFS文件上传、下载、预览实战
SpringBoot + MongoDB GridFS 随着web 3.0的兴起,数据的形式不局限于文字,还有语音.视频.图片等.高效存储与检索二进制数据也成为web 3.0必须要考虑的问题.然而这种 ...
- 浏览器点击pdf的链接——实现下载或预览功能——基础积累
最近在做后台管理系统时,遇到了一个需求,就是点击pdf链接时,需要实现文档的下载. 点击链接,通常就会用到a标签,将链接放在href参数中,点击时就会触发相应的事件了. 常规写法如下: <a : ...
- Java如何实现文档在线预览+下载
Java如何实现文档在线预览+下载 看了好多转换预览的,但是感觉都比较麻烦,所以自己就简单写了个. FileController接收需要预览的文件,替换filePath,如果是要在linux环境下运行 ...
- PDF.js + Vue 浏览器以只读方式打开PDF,后台返回文件流,前端实现预览pdf
如果你想光前端完成 office(xls,doc,ppt) 文件的预览,只能提供你这些库来使用 PDF http://mozilla.github.com/pdf.js/ XLS https://gi ...
- base64格式(pdf/word/ppt等)文件的下载与预览
后端返回base64格式的文件数据,前端根据接收的数据进行转换后实现对文件的下载和预览方法: // 附件下载 这里的的data就是content数据 const downloadAttach = (i ...
最新文章
- Java分布式内存开源实现:Hazelcast
- linux tcp文件分包_Linux网络监控工具大点兵
- 超级棒的170+款web前端开发工具汇总,千万要收藏好!
- typescript索引类型_TypeScript的索引类型与映射类型,以及常用工具泛型的实现
- JavaScript中数组slice和splice的对比小结
- ehcache rmi_EhCache复制:RMI与JGroups
- linux关闭远程服务器,linux – 远程主机关闭SSH连接
- linux防火墙查看被动模式,Centos7搭建vsftpd及被动模式下的防火墙设置
- 为什么6lowpan 要有四个地址_大型监控网络系统如何规划ip地址
- Springboot2Web原生组件注入
- iOS 搭建XMPP环境时添加依赖库报错及解决
- hadoop 3.x 关闭安全模式
- idea整个项目乱码解决办法
- 六合彩:Linux基金会项目合体之后会更精彩吗?
- redis key 操作大全
- 物联网平台建设调研报告
- 使用liteide开发go问题收集
- python颜色对照表及颜色搭配
- ALPS磁式传感器和轴地磁式传感器
- configure error:Package requirements (openssl) were not met