问题描述:针对安卓和pc平台上支持断点续传下载更新包并显示进度条的解决方案
原因分析 :uniyu项目中,在下载更新包时需要不断从服务器上获取更新包的文件数据,并写入到本地文件中,为了提高用户体验以及合理性,应该支持断点续传,且可实时显示进度
解决方案编辑本段回目录在链接服务器获取版本号时,若有更新包则根据下发的版本号(如:3.1.2)下载服务器上对应的更新包(例如:http://100.100.100/3_1_2.zip),下载过程中实时写入本地文件(安装包目录/3.1.2.tmp),下载完成后将3.1.2.tmp后缀名改为3.1.2.zip,并调用ICSharpCode.SharpZipLib.dll解压zip覆盖本地文件及文件夹实现更新。解压完成后调用System.IO.File.Delete(zipFile);删除安装包。(启动游戏时应检测安装包目录下是否有zip文件,有则解压,防止解压一半程序退出)
关于断点续传:
在下载包时新建一个线程用于下载安装包,例如需要下载的版本号为3.1.2,先检测本地安装包目录下是否存在3_1_2.tmp,有的话则获取该.tmp文件的大小,从.tmp文件大小处请求服务器安装包数据。不存在的话则从头开始请求数据。由于下载的临时文件名为.tmp,在下载完成之后才会改后缀名为.zip,所以可以用于断点续传。
FileStream fs;
原因分析 :uniyu项目中,在下载更新包时需要不断从服务器上获取更新包的文件数据,并写入到本地文件中,为了提高用户体验以及合理性,应该支持断点续传,且可实时显示进度
解决方案编辑本段回目录在链接服务器获取版本号时,若有更新包则根据下发的版本号(如:3.1.2)下载服务器上对应的更新包(例如:http://100.100.100/3_1_2.zip),下载过程中实时写入本地文件(安装包目录/3.1.2.tmp),下载完成后将3.1.2.tmp后缀名改为3.1.2.zip,并调用ICSharpCode.SharpZipLib.dll解压zip覆盖本地文件及文件夹实现更新。解压完成后调用System.IO.File.Delete(zipFile);删除安装包。(启动游戏时应检测安装包目录下是否有zip文件,有则解压,防止解压一半程序退出)
关于断点续传:
在下载包时新建一个线程用于下载安装包,例如需要下载的版本号为3.1.2,先检测本地安装包目录下是否存在3_1_2.tmp,有的话则获取该.tmp文件的大小,从.tmp文件大小处请求服务器安装包数据。不存在的话则从头开始请求数据。由于下载的临时文件名为.tmp,在下载完成之后才会改后缀名为.zip,所以可以用于断点续传。
FileStream fs;