电子商务网站建设与管理思考与练习,大兴模版网站建设公司,郑州小程序开发制作,网页设计收获及心得体会在Java服务中有复杂网络环境下下载大文件的需求#xff0c;一开始自己写了一个多线程下载#xff0c;但遇到校园网下载1G以上大文件时直接卡死了。 经调研后决定用aria下载器#xff0c;成熟稳定#xff0c;避免自己去处理各种网络问题。下面记录一下windows和ubuntu系统上…在Java服务中有复杂网络环境下下载大文件的需求一开始自己写了一个多线程下载但遇到校园网下载1G以上大文件时直接卡死了。 经调研后决定用aria下载器成熟稳定避免自己去处理各种网络问题。下面记录一下windows和ubuntu系统上分别使用aria进行文件下载的步骤。
标题aria下载安装打开jsonrpc
# ubuntu系统
sudo apt install -y aria2
aria2c --enable-rpc --rpc-listen-alltrue --rpc-allow-origin-all -c -D# windows系统
# 1. 下载aria2-1.36.0-win-64bit-build1.ziphttps://github.com/aria2/aria2/releases
# 2. 解压文件
# 3. 执行命令
aria2c --enable-rpc --rpc-listen-alltrue --rpc-allow-origin-all -c -D保持aria在线的办法
写了一个监控脚本如下放入crontab定时任务
log aria heartbeat start
result$(curl -X GET --header Accept: application/json http://localhost:6800/jsonrpc | jq .jsonrpc)
if [ $result ]
thenlog aria heartbeat failedaria2c --enable-rpc --rpc-listen-alltrue --rpc-allow-origin-all -c -D
fiJava 代码调用 jsonrpc
文件下载中遇到的一些需要注意的地方
ubuntu 系统上 aria 会在未完成下载时就创建文件。
具体场景例如指定url下载到一个1G的文件到 /home/user/test.zip。在任务创建后/home/user/test.zip 就会被创建且文件大小1G。md5sum /home/user/test.zip 不等于正确值且随着下载一直在变化。在某些情况下这会造成干扰让人或系统误以为文件已经下载完成开始后续的操作出现错误。
我的解决方案给aria的指令改成创建 /home/user/test.zip.temp 甚至 /home/user/test.zip.uuid完成后再把 /home/user/test.zip.temp 或 /home/user/test.zip.uuid 移动到 /home/user/test.zip
给 aria 发送多次相同的 url 和 filename的下载指令重复下载