当前位置:首页 > 代码 > 正文

断点续传示例代码(断点续传控件)

admin 发布:2022-12-19 22:16 158


今天给各位分享断点续传示例代码的知识,其中也会对断点续传控件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

CHttpFile怎么实现断点续传?

其实断点续传的原理很简单,就是在Http的请求上和一般的下载有所不同而已。 打个比方,浏览器请求服务器上的一个文时,所发出的请求如下: 假设服务器域名为w ,文件名为down.zip。 GET /down.zip HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms- excel, application/msword, application/vnd.ms-powerpoint, */* Accept-Language: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) Connection: Keep-Alive 服务器收到请求后,按要求寻找请求的文件,提取文件的信息,然后返回给浏览器,返回信息如下: 200 Content-Length=106786028 Accept-Ranges=bytes Date=Mon, 30 Apr 2001 12:56:11 GMT ETag=W/"02ca57e173c11:95b" Content-Type=application/octet-stream Server=Microsoft-IIS/5.0 Last-Modified=Mon, 30 Apr 2001 12:56:11 GMT 所谓断点续传,也就是要从文件已经下载的地方开始继续下载。所以在客户端浏览器传给 Web服务器的时候要多加一条信息--从哪里开始。 下面是用自己编的一个"浏览器"来传递请求信息给Web服务器,要求从2000070字节开始。 GET /down.zip HTTP/1.0 User-Agent: NetFox RANGE: bytes=2000070- Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 仔细看一下就会发现多了一行RANGE: bytes=2000070- 这一行的意思就是告诉服务器down.zip这个文件从2000070字节开始传,前面的字节不用传了。 服务器收到这个请求以后,返回的信息如下: 206 Content-Length=106786028 Content-Range=bytes 2000070-106786027/106786028 Date=Mon, 30 Apr 2001 12:55:20 GMT ETag=W/"02ca57e173c11:95b" Content-Type=application/octet-stream Server=Microsoft-IIS/5.0 Last-Modified=Mon, 30 Apr 2001 12:55:20 GMT 和前面服务器返回的信息比较一下,就会发现增加了一行: Content-Range=bytes 2000070-106786027/106786028 返回的代码也改为206了,而不再是200了。 知道了以上原理,就可以进行断点续传的编程了。

JavaScript文件分片上传,断点续传如何实现?

public class FileInf {

public FileInf(){}

public String id="";

public String pid="";

public String pidRoot="";

/** * 表示当前项是否是一个文件夹项。 */

public boolean fdTask=false;

// /// 是否是文件夹中的子文件 /// /summary

public boolean fdChild=false;

/** * 用户ID。与第三方系统整合使用。 */

public int uid=0;

/** * 文件在本地电脑中的名称 */

public String nameLoc="";

/** * 文件在服务器中的名称。 */

public String nameSvr="";

/** * 文件在本地电脑中的完整路径。示例:D:\Soft\QQ2012.exe */

public String pathLoc="";

/** * 文件在服务器中的完整路径。示例:F:\\ftp\\uer\\md5.exe */

public String pathSvr="";

/** * 文件在服务器中的相对路径。示例:/www/web/upload/md5.exe */

public String pathRel="";

/** * 文件MD5 */

public String md5="";

/** * 数字化的文件长度。以字节为单位,示例:120125 */

public long lenLoc=0;

/** * 格式化的文件尺寸。示例:10.03MB */

public String sizeLoc="";

/** * 文件续传位置。 */

public long offset=0;

/** * 已上传大小。以字节为单位 */

public long lenSvr=0;

/** * 已上传百分比。示例:10% */

public String perSvr="0%";

public boolean complete=false;

public Date PostedTime = new Date();

public boolean deleted=false;

/** * 是否已经扫描完毕,提供给大型文件夹使用,大型文件夹上传完毕后开始扫描。 */

public boolean scaned=false;

}

Java Socket如何实现文件的断点续传,有代码更好

1package com.tangshun.;

2

3import java.io.File;

4import java.io.IOException;

5import java.io.InputStream;

6import java.io.RandomAccessFile;

7import java.net.HttpURLConnection;

8import java.net.MalformedURLException;

9import java.net.URL;

10

11//断点续传

12public class DownLoad {

13

14 public static void down(String URL, long nPos, String savePathAndFile) {

15 try {

16 URL url = new URL(URL);

17 HttpURLConnection httpConnection = (HttpURLConnection) url

18 .openConnection();

19 // 设置User-Agent

20 httpConnection.setRequestProperty("User-Agent", "NetFox");

21 // 设置断点续传的开始位置

22 httpConnection.setRequestProperty("RANGE", "bytes=" + nPos);

23 // 获得输入流

24 InputStream input = httpConnection.getInputStream();

25 RandomAccessFile oSavedFile = new RandomAccessFile(savePathAndFile,

26 "rw");

27 // 定位文件指针到nPos位置

28 oSavedFile.seek(nPos);

29 byte[] b = new byte[1024];

30 int nRead;

31 // 从输入流中读入字节流,然后写到文件中

32 while ((nRead = input.read(b, 0, 1024)) 0) {

33 (oSavedFile).write(b, 0, nRead);

34 }

35 httpConnection.disconnect();

36 } catch (MalformedURLException e) {

37 e.printStackTrace();

38 } catch (IOException e) {

39 e.printStackTrace();

40 }

41 }

42

43 public static long getRemoteFileSize(String url) {

44 long size = 0;

45 try {

46 HttpURLConnection conn = (HttpURLConnection) (new URL(url))

47 .openConnection();

48 size = conn.getContentLength();

49 conn.disconnect();

50 } catch (Exception e) {

51 e.printStackTrace();

52 }

53 return size;

54 }

55

56public static void main(String[] args) {

57 String url = " ";

58 String savePath = "F:\\";

59 String fileName = url.substring(url.lastIndexOf("/"));

60 String fileNam=fileName;

61 HttpURLConnection conn = null;

62 try {

63 conn = (HttpURLConnection) (new URL(url)).openConnection();

64 } catch (Exception e) {

65 e.printStackTrace();

66 }

67 File file = new File(savePath + fileName);

68 // 获得远程文件大小

69 long remoteFileSize = getRemoteFileSize(url);

70 System.out.println("远程文件大小="+remoteFileSize);

71 int i = 0;

72 if (file.exists()) {

73 // 先看看是否是完整的,完整,换名字,跳出循环,不完整,继续下载

74 long localFileSize = file.length();

75 System.out.println("已有文件大小为:"+localFileSize);

76

77 if (localFileSize remoteFileSize) {

78 System.out.println("文件续传");

79 down(url, localFileSize, savePath + fileName);

80 }else{

81 System.out.println("文件存在,重新下载");

82 do{

83 i++;

84 fileName = fileNam.substring(0, fileNam.indexOf(".")) + "(" + i

85 + ")" + fileNam.substring(fileNam.indexOf("."));

86

87 file = new File(savePath + fileName);

88 }while(file.exists());

89 try {

90 file.createNewFile();

91 } catch (IOException e) {

92 e.printStackTrace();

93 }

94 down(url, 0, savePath + fileName);

95 }

96 // 下面表示文件存在,改名字

97

98 } else {

99 try {

100 file.createNewFile();

101 System.out.println("下载中");

102 down(url, 0, savePath + fileName);

103 } catch (IOException e) {

104 e.printStackTrace();

105 }

106 }

107 }}

108

断点续传示例代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于断点续传控件、断点续传示例代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/27154.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载