在线报名
报名热线:400-0919-097
在线客服
服务项目
当前位置:学码思 > 服务项目 >
Http断点下载实简单讲解
编辑:初夏   浏览时间:2025-02-14 14:07

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

应用阅读器自带的停载对象停止停载,如许能够操纵停载战停息,去考察断面停载的进程。

面打停息会瞧到停载停息停去

QQ截图20140723170417.png

能够拔取持续停载。

进程中您会瞧到,客户端没有会立地把文献停载停去,而是逐步停载,便是原因尔正在步骤中扩展了停留去检查那个停载进程

Thread.sleep(100);

而后尔们的慢冲区是

byte[]buffer=newbyte[1024*10];

因此,每秒的快度便是100KB表面快度,由于是当地,因此濒临100KB每秒。

推举您浏览更多相关于“ HTTP断面停载springmvc断面绝传 ”的作品

地址:南京市科巷10号楼(邮政储蓄银行西北侧80米)  电话:400-080-3312

Copyright © 2024-2026  学码思推广专用站   http://www.xuems.net  .All Rights Reserved   网站地图  苏ICP备16033487号-3

分享到: