| @@ -246,29 +246,29 @@ public class UserMouldVideoController extends BaseController { | |||
| InputStream inputStream = new URL(mouldVideo.getVideoPlayUrl()).openStream(); | |||
| //获取从那个字节开始读取文件 | |||
| String rangeString = request.getHeader("Range"); | |||
| if(StringUtils.isNotBlank(rangeString)){ | |||
| tmpFile = FileUtils.createTmpFile(inputStream, mouldVideo.getId().toString(), "mp4"); | |||
| RandomAccessFile targetFile = new RandomAccessFile(tmpFile, "r"); | |||
| long fileLength = targetFile.length(); | |||
| long range = Long.valueOf(rangeString.substring(rangeString.indexOf("=") + 1, rangeString.indexOf("-"))); | |||
| //设置内容类型 | |||
| response.setHeader("Content-Type", "video/mp4"); | |||
| //设置此次相应返回的数据长度 | |||
| response.setHeader("Content-Length", String.valueOf(fileLength - range)); | |||
| //设置此次相应返回的数据范围 | |||
| response.setHeader("Content-Range", "bytes "+range+"-"+(fileLength-1)+"/"+fileLength); | |||
| //返回码需要为206,而不是200 | |||
| response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); | |||
| //设定文件读取开始位置(以字节为单位) | |||
| targetFile.seek(range); | |||
| byte[] cache = new byte[1024 * 300]; | |||
| int flag; | |||
| while ((flag = targetFile.read(cache))!=-1){ | |||
| outputStream.write(cache, 0, flag); | |||
| } | |||
| }else{ | |||
| // String rangeString = request.getHeader("Range"); | |||
| // if(StringUtils.isNotBlank(rangeString)){ | |||
| // tmpFile = FileUtils.createTmpFile(inputStream, mouldVideo.getId().toString(), "mp4"); | |||
| // RandomAccessFile targetFile = new RandomAccessFile(tmpFile, "r"); | |||
| // long fileLength = targetFile.length(); | |||
| // long range = Long.valueOf(rangeString.substring(rangeString.indexOf("=") + 1, rangeString.indexOf("-"))); | |||
| // //设置内容类型 | |||
| // response.setHeader("Content-Type", "video/mp4"); | |||
| // //设置此次相应返回的数据长度 | |||
| // response.setHeader("Content-Length", String.valueOf(fileLength - range)); | |||
| // //设置此次相应返回的数据范围 | |||
| // response.setHeader("Content-Range", "bytes "+range+"-"+(fileLength-1)+"/"+fileLength); | |||
| // //返回码需要为206,而不是200 | |||
| // response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT); | |||
| // //设定文件读取开始位置(以字节为单位) | |||
| // targetFile.seek(range); | |||
| // | |||
| // byte[] cache = new byte[1024 * 300]; | |||
| // int flag; | |||
| // while ((flag = targetFile.read(cache))!=-1){ | |||
| // outputStream.write(cache, 0, flag); | |||
| // } | |||
| // }else{ | |||
| response.setHeader("Content-Disposition", "attachment; filename=" | |||
| + URLEncoder.encode(mouldVideo.getId()+".mp4", "UTF-8")); | |||
| //解决编码问题 | |||
| @@ -280,7 +280,7 @@ public class UserMouldVideoController extends BaseController { | |||
| while ((flag = inputStream.read(cache))!=-1){ | |||
| outputStream.write(cache, 0, flag); | |||
| } | |||
| } | |||
| // } | |||
| }catch(MallinkException e){ | |||
| ResultData resultData = new ResultData(e.getErrorCode(), e.getMessage()); | |||