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

太原新建火车站织梦怎么做门户网站

太原新建火车站,织梦怎么做门户网站,河北建设部官方网站,全媒体运营师报名费多少钱1.说明 大视频的在线预览,如果不支持断点下载,将无法在苹果手机上播放,同时不支持进度条拖动. 之所以这样,是因为视频文件太大了,通过二进制流向浏览器传输时,整个文件尚未传输完成时,会被浏览器强制关闭流,不再接收,等缓存播放到一定程度时,浏览器会再次向后端请求视频文件,同…1.说明 大视频的在线预览,如果不支持断点下载,将无法在苹果手机上播放,同时不支持进度条拖动. 之所以这样,是因为视频文件太大了,通过二进制流向浏览器传输时,整个文件尚未传输完成时,会被浏览器强制关闭流,不再接收,等缓存播放到一定程度时,浏览器会再次向后端请求视频文件,同时附带range参数,指定获取数据范围,后端需支持对range参数的处理. 2.代码 ResponseBodyGetMapping(value /preview)Operation(summary 在线预览, description 文件在浏览器中预览)public void Preview(RequestParam String fileInfoId, HttpServletRequest request, HttpServletResponse response) throws Exception {//获取存储文件var fileInfo fileInfoService.Get(fileInfoId);if (fileInfo null) {response.sendError(HttpServletResponse.SC_NOT_FOUND, File not found!);return;}//设置页面缓存if (MisFileType.PICTURE.equals(fileInfo.getFile_type()) || MisFileType.TEXT.equals(fileInfo.getFile_type())) {response.setHeader(Cache-Control, max-age60);//页面缓存时间60秒}//断点下载ResumeDownload(request, response, fileInfo, inline);}/*** 支持断点重新下载文件** param fileInfo 文件* param disposition 下载方式 inline:内嵌 attachment:附件*/private static void ResumeDownload(HttpServletRequest request, HttpServletResponse response,FileInfoOutput fileInfo, String disposition) throws IOException {//获取存储文件String storageFilePath FileConfig.Path File.separator fileInfo.getFile_path();File storageFile new File(storageFilePath);if (!StringUtils.hasLength(storageFilePath) || !storageFile.exists()) {//相对路径未找到文件storageFilePath fileInfo.getFile_absolute_path();//根据绝对路径寻找文件storageFile new File(storageFilePath);if (!StringUtils.hasLength(storageFilePath) || !storageFile.exists()) {response.sendError(HttpServletResponse.SC_NOT_FOUND, File not found!);return;}}//推断类型String mimeType Files.probeContentType(storageFile.toPath());if (!StringUtils.hasLength(mimeType)) {URL url new URL(file:/// storageFilePath);mimeType url.openConnection().getContentType();}//下载开始位置long startByte 0;//下载结束位置long endByte storageFile.length() - 1;//获取下载范围String range request.getHeader(range);if (range ! null range.contains(bytes) range.contains(-)) {range range.substring(range.lastIndexOf() 1).trim();String[] rangeArray range.split(-);if (rangeArray.length 1) {//Example: bytes1024-if (range.endsWith(-)) {startByte Long.parseLong(rangeArray[0]);} else { //Example: bytes-1024endByte Long.parseLong(rangeArray[0]);}}//Example: bytes2048-4096else if (rangeArray.length 2) {startByte Long.parseLong(rangeArray[0]);endByte Long.parseLong(rangeArray[1]);}}long contentLength endByte - startByte 1;//HTTP 响应头设置//断点续传HTTP 状态码必须为 206否则不设置如果非断点续传设置 206 状态码则浏览器无法下载if (range ! null) {log.trace(断点下载range:{},总大小:{},{}({}), range, storageFile.length(), fileInfo.getFile_name(), fileInfo.getId());response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);}if (StringUtils.hasLength(mimeType)) {response.setContentType(mimeType);response.setHeader(Content-Type, mimeType);}response.setHeader(Content-Length, String.valueOf(contentLength));response.setHeader(Accept-Ranges, bytes);//Content-Range: 下载开始位置-下载结束位置/文件大小response.setHeader(Content-Range, bytes startByte - endByte / storageFile.length());//Content-disposition: inline; filenamexxx.xxx 表示浏览器内嵌显示该文件response.setHeader(Content-Disposition, disposition ; filename URLEncoder.encode(fileInfo.getFile_name(), StandardCharsets.UTF_8));//传输文件流BufferedOutputStream outputStream null;RandomAccessFile randomAccessFile null;//已传送数据大小long transmittedLength 0;try {//以只读模式设置文件指针偏移量randomAccessFile new RandomAccessFile(storageFile, r);randomAccessFile.seek(startByte);outputStream new BufferedOutputStream(response.getOutputStream());byte[] buff new byte[4096];int len;while (transmittedLength contentLength (len randomAccessFile.read(buff)) ! -1) {outputStream.write(buff, 0, len);transmittedLength len;}outputStream.flush();response.flushBuffer();log.trace(下载完毕:{}-{},下载量:{},总大小:{},{}({}), startByte, endByte, transmittedLength,storageFile.length(), fileInfo.getFile_name(), fileInfo.getId());} catch (IOException e) {if (StringUtils.hasLength(range)) {response.setHeader(Content-Range, bytes startByte - startByte transmittedLength / storageFile.length());log.trace(断点下载完毕:{}-{},下载量:{},总大小:{},{}({}), startByte, endByte, transmittedLength, storageFile.length(),fileInfo.getFile_name(), fileInfo.getId());} else {log.info(下载停止:{}-{},下载量:{},总大小:{},{}({}), startByte, endByte, transmittedLength, storageFile.length(),fileInfo.getFile_name(), fileInfo.getId());}} finally {try {if (randomAccessFile ! null) {randomAccessFile.close();}} catch (IOException e) {log.error(下载异常, fileInfo.getId(), e);}}}
http://www.yayakq.cn/news/3997/

相关文章:

  • 网站上的支付接口怎么做桂林漓江水位
  • 网站建设到本地公司网站需要备案
  • 可以提供排版的网站网站着陆页 推荐
  • 做720效果的还有哪个网站网站 谁建设谁负责
  • 西安网站建设收费标准wordpress主页显示不了
  • 淮南公司网站建设网站备案政策
  • 网站建设专业性的评估Wordpress 微博评论
  • 怎么制作网站搜索窗口湛江公司做网站
  • 建设网站流程深圳装修公司上市的有哪几家
  • 上海cms模板建站长春有哪些互联网大厂
  • 专业的开发网站建设价格沧州市网站制作
  • 站长工具5g网站建设的开发方法有哪些
  • 品牌网站建设基本流程网站权重低
  • 毕设 网站开发360竞价推广
  • 佳木斯网站制作wordpress 获得用户信息
  • 网站上的销售怎么做怎样做自己可以发布消息的网站
  • 个人域名免费网站企业管理咨询有限公司的经营范围
  • 设计网站高级感旺道seo推广效果怎么样
  • 网站seo做点提升流量如何做网站呢
  • 巨久科技网站建设四川建设部官方网站
  • 网站挂百度推广湖北什么是网站建设
  • 天津宁河区建设网站在国外视频网站做中国美食
  • 做物流的网站爱站网
  • 学校网站建设培训方案模板wordpress伪静态301错误
  • 免费下载精神文明建设宣传网站招聘网络推广专员
  • 一个ip 做2个网站吗百度搜索风云榜游戏
  • 深圳网站设计与制作长春企业免费建站
  • 自建网站怎么做后台管理系统教育类php开源网站
  • 肥东住房和城乡建设部网站人力资源公司代缴社保合法吗
  • wordpress咋建站建网站定制