
Public Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Public Declare Function DeleteUrlCacheEntry Lib "wininet" Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
'/************************************************************************************/
'/函数功能:从服务器下载文件
'/参数说明:参数一 服务器文件路径,本地文件路径
'/编 写 人:于莹莹
'/编写日期:2007-8-28
'/************************************************************************************/
Public Function DownloadFile(url As String, LocalFilename As String) As Boolean
Dim lngRetVal As Long
lngRetVal = URLDownloadToFile(0, url, LocalFilename, 0, 0)
If lngRetVal = 0 Then
DownloadFile = True
DeleteUrlCacheEntry url
End If
End Function
使用方法:
DownloadFile "http://zhidao.baidu.com/question/66811350.html", "d:\66811350.html"
用URLDownloadToFile如果不理想,可以使如芦用控制的异步下载,那个网上有一些代码,我不怎么会
冷静地分析了一下程序说明:1 web站点一个 用途:A.提供下载源(dll,exe,图片...等等...所有最新文件) B.那个啥...嗯....弄个页面,输出xml格式的数据(用response.write输出)这个xml数据要体现,当前版本号,文件名等信息,就是把DataTable以xml表现出来形如以下。(当然,完全可以用WebService,只是个人认为用xml更专业,更节约)2 升级程序一个 用途:A.负责判断是否需升级 B.下载需要升级的文件 C.将老文件替换成新文件3 你要升级的程序,在此不多说。看接下来的细节。 很重要的说明:升级程序是一个独立的exe文件,让它跟主程序打包在一起,安装后在同一个目录下边。前面三个程序相辅相成,才能完成自动升级更新。看细节吧。 接下来是细节了,很冷静的细节,你运气好,碰上我今天刚好心情差,给你说详细。(1,2,3....表示步骤)1步:往web站点中传文件,记得接收文件的时候改一下后缀名(统一改为.rar或.txt)这样,web服务器(IIS)不会因为安全因素将特别文件(.dll,.exe等)拒之门外。同时,往数据表中记录以下属性梁携(文件真实名[如:ABC.exe]、文件下载地址、相对根路径的路径、文件版本号[有版本号的(如:dll,exe)取版本号,没版本号的(如:jpg)取MD5值])特别说明:版本号、你可以百度“C#获取文件版本号”获取相关代码。 很尴尬 ==! 这里有一步要说明一下:主程序启动时,启动升级程序(Process可做到)有问题百度“C#启动其它应用程序” 2步:升级程序请求生成xml的页面(实际上就是一个aspx,只是输出的内容是 xml 形式的,用response.write输出),或者你直接用webservice提供一个方法返回第一步中提及的数据表(DataTable). 3步:升级程序将xml内容转译成datatable、如果用webservice这一步就省了。 4步:升级程序遍历第三步获取的datatable、根据"相对根路径的路径"获取本地老文件的信息,如果本地有文件,就获取版本号,或者MD5值,如果本地没有文件、或版本号不等、或者MD5值不等则表示这个文件得更新(把这条信息(DataRow)存入队列(数组))这一步,知道了有哪些文件需要下载。 5步:升级程序根据第 4步 中得到的队列逐一下载文件到 (Temp目录) 6步:升级程序关闭主程序进程(Process类可做到),有问题可以 百度“C#结束其它进程”,这样要杀要剐老文件就随你了,因为它们将不再被其它进程所橡孝伏占有。 7步:升级程序将第 5步 中下载的文件根据 "相对根路径的路径" 字段逐一移到对应目录,将老文件替换。 8步:工作完成,升级程序启动主程序(Process类可以做到) 有问题可以百度“C#打开其它exe” 9步:没了,没啥好说的了。 下载可以用:httprequest,httpresponse这两个类,具体见msdn,用它们可做断点续传,实时进度条,多线程下载。你还可以用WebClient它不怎么样,一次下一个文件,无法实现断点续传,无法实时获取进度,最重要的一点,用它显得不专业。 思路在这了,绝对错不了。我叫绿豆蛙,别人喜欢叫我三爷,我很多年没碰C/S了,幻想有一天还能做个C/S的项目。哥哥我今天心情不好,因为我快结婚了,慎老压力特别大。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)