上海莫尔丽信息科技有限公司 > 产品展示 >

Http断点下载实简单讲解
发布于2025-02-19 17:38 文章作者:问风
Http文献停载的平凡形式便没有多道了,断面停载取平凡形式没有一致的是,断面停载的头疑息内部减少了1个属性
RANGE:bytes=100000-那里RANGE代替客户端要从谁人地位最先停载
而效劳器前往时战平凡形式没有共的是:1:多了1个属性
Content-Range=bytes100000-19999/20000注重另有少少属性要配置,战平凡形式一致,比方Content-Length属性2:前往码为206
而后尔们去观1段本质运用中的断面停载代码,注重那里尔应用的是SpringMVC形式开辟的:
@SuppressWarnings({"unchecked"})@RequestMapping(value="/downOdex.do")publicResponseEntity<String>downFile(@RequestParam(value="odexName")StringodexName,HttpServletResponseresponse,HttpServletRequestrequest){InputStreaminputStream=null;ServletOutputStreamout=null;try{Filefile=newFile(OdexManage.odexFileBasePath+"\\"+odexName);intfSize=Integer.parseInt(String.valueOf(file.length()));response.setCharacterEncoding("utf-8");response.setContentType("application/x-download");response.setHeader("Accept-Ranges","bytes");response.setHeader("Content-Length",String.valueOf(fSize));response.setHeader("Content-Disposition","attachment;fileName="+odexName);inputStream=newFileInputStream(OdexManage.odexFileBasePath+"\\"+odexName);longpos=0;if(null!=request.getHeader("Range")){//断面绝传response.setStatus(HttpServletResponse.SC_PARTIAL_CONTENT);try{pos=Long.parseLong(request.getHeader("Range").replaceAll("bytes=","").replaceAll("-",""));}catch(NumberFormatExceptione){pos=0;}}out=response.getOutputStream();StringcontentRange=newStringBuffer("bytes").append(pos+"").append("-").append((fSize-1)+"").append("/").append(fSize+"").toString();response.setHeader("Content-Range",contentRange);inputStream.skip(pos);byte[]buffer=newbyte[1024*10];intlength=0;while((length=inputStream.read(buffer,0,buffer.length))!=-1){out.write(buffer,0,length);Thread.sleep(100);}}catch(Exceptione){logger.error("ODEX硬件停载同常:"+e);}finally{try{if(null!=out)out.flush();if(null!=out)out.close();if(null!=inputStream)inputStream.close();}catch(IOExceptione){}}returnnewResponseEntity(null,HttpStatus.OK);}其中心正在于HTTP订定内中属性有极少没有共的中央,另有便是InputStream跳过没有须要读的文献,战注重闭关淌。经由过程中心代码也能够望到,原本那战是否是SpringMVC出多年夜相干,因此您能够很简单的运用到您的名目中。
比方看待那段代码,尔拜候以下途径
http://localhost/downOdex.do?odexName=D03BFBAE35BEC791092E52EC907D1F69.ZIP
应用阅读器自带的停载对象停止停载,如许能够操纵停载战停息,去考察断面停载的进程。
面打停息会瞧到停载停息停去
能够采用持续停载。
进程中您会瞅到,客户端没有会立地把文献停载停去,而是逐步停载,便是由于尔正在秩序中减少了停留去检查那个停载进程
Thread.sleep(100);而后尔们的慢冲区是
byte[]buffer=newbyte[1024*10];因而,每秒的快度便是100KB实践快度,由于是当地,因而亲热100KB每秒。
推举您浏览更多相关于“ HTTP断面停载springmvc断面绝传 ”的著作