近期遇到一位小伙伴要实现批量下载,然后他给我的思路是把要下载的文件集合在服务器压缩打包下载,这一看就是新手思路哈。如果文件太大,那么打包带来的一系列问题怎么办?先不说空间资源消耗,CPU怎么办, 内存怎么办。所以。。。

思路很多,比如做种子,比如做迅雷链接等,反正不要去打包,就可以了。

我只是想要下些东西,那么在不考虑带宽的前提下,为了达到这个目的,我们完全可以依赖现在成熟的工具啊,比如迅雷,QQ等下载工具。

下面把关键代码放出来,供大家学习。

JAVA代码:

这里用到了Sun公司提供的  javabase64-1.3.1.jar

有几个规则需要先了解:

//迅雷的编码规则为:原地址前面加"AA",后面加"ZZ",然后进行Base64编码,最后加上迅雷下载协议"Thunder://"组成完整的下载链接

//快车的编码规则:原地址前后都加上"[FLASHGET]",注意后面还要加上"&",符号怎么得出不清楚,在最后面加的是其他个人信息,至今未有人报告转换错误

//旋风相对就简单多了:将原地址直接base64编码加上下载协议就好了

以下为JAVA测试代码:

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
* BASE64编码专用链接
*/
public class JavaBase64 {

public static void main(String[] args) {

String resource = "http://192.168.56.1:8080/portal2.7z";

//迅雷的编码规则为:原地址前面加"AA",后面加"ZZ",然后进行Base64编码,最后加上迅雷下载协议"Thunder://"组成完整的下载链接
String resourceForThunder = "Thunder://" + getBASE64("AA" + resource + "ZZ");
//快车的编码规则:原地址前后都加上"[FLASHGET]",注意后面还要加上"&",符号怎么得出不清楚,在最后面加的是其他个人信息,至今未有人报告转换错误
String resourceForFlashget = "Flashget://" + getBASE64("[FLASHGET]" + resource + "[FLASHGET]") + "&something";
//旋风相对就简单多了:将原地址直接base64编码加上下载协议就好了
String resourceForQQDownLoad = "qqdl://" + getBASE64(resource);

System.out.println(resourceForThunder);
System.out.println(resourceForFlashget);
System.out.println(resourceForQQDownLoad);

//解码调用getFromBASE64,注意不要将resourceForThunder直接进行解码,因为当中含有"Thunder://"等未经过编码的字符
System.out.println("迅雷链接解码:"+getFromBASE64("QUFodHRwOi8vMTkyLjE2OC41Ni4xOjgwODAvcG9ydGFsMi43elpa"));

}

//BASE64 编码
public static String getBASE64(String s) {
if (s == null)
return null;
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(s.getBytes());

}

//BASE64 解码
public static String getFromBASE64(String s) {
if (s == null)
return null;
BASE64Decoder decoder = new BASE64Decoder();
try {
byte[] b = decoder.decodeBuffer(s);
return new String(b);
} catch (Exception e) {
return null;
}
}

}

执行结果:

  1. Thunder://QUFodHRwOi8vMTkyLjE2OC41Ni4xOjgwODAvcG9ydGFsMi43elpa
  2. Flashget://W0ZMQVNIR0VUXWh0dHA6Ly8xOTIuMTY4LjU2LjE6ODA4MC9wb3J0YWwyLjd6W0ZMQVNIR0VUXQ==&something
  3. qqdl://aHR0cDovLzE5Mi4xNjguNTYuMTo4MDgwL3BvcnRhbDIuN3o=
  4. 迅雷链接解码:AAhttp://192.168.56.1:8080/portal2.7zZZ

当然除了用第三方包,我们也可以自己实现,详见 http://baike.baidu.com/view/469071.htm 代码实现部分

最后修改:2018 年 06 月 07 日
如果觉得我的文章对你有用,请随意赞赏