| 
				
				
					
				
				
				 | 
			
			 | 
			@@ -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()); | 
		
		
	
	
		
			
				| 
				
					
				
				
				
				 | 
			
			 | 
			
  |