从 HTTP 上下载文件示例
2006-12-29 13:16
381 查看
从 HTTP 上下载文件示例,源码免费(有进度显示)
*直接运行下面 代码就可以了,在.vfp8.0环境下测试成功! * How to download data of this reference (DBF files) using HTTP * 从 HTTP 上下载文件 *------------------------------------------------------------------ Clea #Define INTERNET_OPEN_TYPE_DIRECT 1 #Define INTERNET_FLAG_NEED_FILE 16 #Define HTTP_QUERY_CONTENT_TYPE 1 #Define HTTP_QUERY_CONTENT_LENGTH 5 Do Decl && declare external functions *If InternetCheckConnection("http://www.163.com/", 1, 0) <> 0 &&已经连接Internet *Endif * initialize Wininet library Private hOpen hOpen = InternetOpen ("vfp", INTERNET_OPEN_TYPE_DIRECT, 0, 0, 0) If hOpen = 0 ? "GetLastError:", GetLastError() ? "在本机上 WinInet 函数库无效" Return Endif Local lcBaseUrl, lcDstPath, hFile, lcFile lcBaseUrl = "http://ftpgz13.pconline.com.cn/pub/download/200203/Mp3RenameEasy.zip"&&根据实际修改这里的字符串 lcFile = "Mp3RenameEasy.zip"&&保存的文件名 lcDstPath = "C:\" &&保存的路径 * get a handle of the remote file hFile = InternetOpenUrl (hOpen,; lcBaseUrl , "", 0,; INTERNET_FLAG_NEED_FILE, 0) If hFile <> 0 ?hfile * even if there is no such file, the most evidently * you will get an ASCII file in response (404 error page) = http2local (hFile, lcDstPath + lcFile) = InternetCloseHandle (hFile) Else ? "网址不能打开" ? "错误号:", GetLastError() Endif * release WinInet library = InternetCloseHandle (hOpen) Return && main *-------------------------------------------- Function http2local (hSource, lcTarget) * reads data from a remote file #Define TransferBuffer 4096 ? lcTarget + " " * create the target file hTarget = Fcreate (lcTarget) If (hTarget = -1) ?? "指定的目标文件无效" Return -1 Endif Local Buffer , BufLen , dwIndex Buffer = Space(128) BufLen = Len(Buffer) dwIndex = 0 If HttpQueryInfo(hSource, HTTP_QUERY_CONTENT_LENGTH, @Buffer, @BufLen, @dwIndex) = 0 ?"获取文件信息失败!" Return -1 Endif ? ?"文件大小: " + Left(Buffer,buflen)+" / " lnTotalBytesRead = 0 lnSec = Seconds() Do While .T. If Inkey() = 27 && 按 "Esc" 键 Exit Endif lcBuffer = Replicate(Chr(0), TransferBuffer) lnBytesRead = 0 If InternetReadFile (hSource, @lcBuffer,TransferBuffer, @lnBytesRead) = 1 = Fwrite (hTarget, lcBuffer, lnBytesRead) If lnBytesRead = 0 Exit Endif lnTotalBytesRead = lnTotalBytesRead + lnBytesRead Wait Window Transform(Val(Buffer)/1024) + " KB / " + Transform(lnTotalBytesRead/1024) + " KB " Nowait Else Exit Endif DoEvents Enddo = Fclose (hTarget) ?? " " + Transform(lnTotalBytesRead) + " Bytes 完成 用时: " + Transform(Seconds() - lnSec) + " 秒" Return lnBytesRead Endfunc Procedure Decl Declare Integer InternetCheckConnection In wininet.Dll ; String lpszUrl ,; Integer dwFlags ,; Integer dwReserved Declare Integer GetLastError In kernel32 Declare Integer InternetOpen In wininet; STRING sAgent,; INTEGER lAccessTypem,; STRING sProxyName,; STRING sProxyBypass,; STRING lFlags Declare Integer InternetCloseHandle In wininet Integer hInet Declare Integer InternetOpenUrl In wininet; INTEGER hInternet,; STRING lpszUrl,; STRING lpszHeaders,; INTEGER dwHeadersLength,; INTEGER dwFlags,; INTEGER dwContext Declare Integer InternetReadFile In wininet; INTEGER hFile,; STRING @ lpBuffer,; INTEGER dwNumberOfBytesToRead,; INTEGER @ lpdwNumberOfBytesRead Declare Integer HttpQueryInfo In wininet ; INTEGER hHttpRequest, ; INTEGER lInfoLe |
相关文章推荐
- Servlet学习笔记(HTTP请求详细了解以及文件下载示例)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- Servlet——使用http响应头Content-Disposition下载文件的示例
- [导入]ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- java使用http实现文件下载学习示例
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- ASP.NET 2.0 HttpHandler实现对某种文件类型权限保护(示例代码下载)
- 使用HttpDownLoadHelper下载文件
- 反射机制及开源框架xUitls的使用,使用HttpUtils通过断点续传下载文件
- 运用java.net.HttpURLConnection实现java多线程下载文件
- hdfs文件操作操作示例,包括上传文件到HDFS上、从HDFS上下载文件和删除HDFS上的文件
- 安卓使用http下载文件
- 下载网络文件HttpURLConnection.getContentLength()大小为 0
- 用Java实现HTTP文件队列下载
- 使用HttpURLConnection实现文件下载
- Asp.net 2.0 用C# 创建 PDF文件[引用] (示例代码下载)