VB用inet控件怎样才能不读取缓存连接网络上的文件?

lvheye 2010-01-14 04:56:50
我用inet控件建立了一个连接,连接过一次之后就会产生了缓存,下次再连接时它会先读取缓存的内容,这样得到的内容就是旧的了,而我想要的是不管有无连接过,都是连接到远程读取远程的相关内容,这要怎么实现?
...全文
464 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvheye 2010-01-14
  • 打赏
  • 举报
回复
13楼的你的方法解决了我的问题,非常感谢!
三断笛 2010-01-14
  • 打赏
  • 举报
回复
我都是先删除该项目的缓存,然后再执行。
删除缓存函数:DeleteUrlCacheEntry (FileName)
filename就是你指定的网址。API声明如下:
Private Declare Function DeleteUrlCacheEntry Lib "wininet" _
Alias "DeleteUrlCacheEntryA" _
(ByVal lpszUrlName As String) As Long
liguicd 2010-01-14
  • 打赏
  • 举报
回复
你要的答案来了

方法1.
对URL进行更改,让它每次访问不同的URL但指向相同的页面。
可在URL结尾添加一些无意义的参数:http://www.86lg.com/?abc=1
你可以用rnd生成随机数实现,简单。

方法2.

'下载文件
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

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://www.baidu.com/img/lm.gif", App.Path & "\lm.gif"
lvheye 2010-01-14
  • 打赏
  • 举报
回复
flyinthesky,你能再说详细点吗?
嗷嗷叫的老马 2010-01-14
  • 打赏
  • 举报
回复
http://www.m5home.com/blog/article.asp?id=65

把这个代码里的WINSOCK下载部分分离出来就行了.

其实它本身也就已经是一个独立的部分了,接口什么的都写好了,基本上可以直接使用,如果只需要下载功能的话.
flyinthesky 2010-01-14
  • 打赏
  • 举报
回复
如果用inet的话,记得我很早也遇到过这个问题,
好像是FTP下载,后来的解决办法是CLOSE,再重连接。。。
孤独剑_LPZ 2010-01-14
  • 打赏
  • 举报
回复
每次先清除ie缓存如何?
参考 VB清除IE缓存
没有测试过,自己试吧
lvheye 2010-01-14
  • 打赏
  • 举报
回复
我想要的效果是读取一个网站上的txt文件中的内容,要每次读取都必须是连接到网站读取新的内容,而不是缓存里的旧内容。myjian你说的办法可以给个具体点的例子吗?我没用过winsock控件。
嗷嗷叫的老马 2010-01-14
  • 打赏
  • 举报
回复
调用Inet1.OpenURL时貌似已经自动下载到缓存了.

要想不使用缓存,自己使用WINSOCK控件发送HTTP GET请求取文件吧.
lvheye 2010-01-14
  • 打赏
  • 举报
回复
还是没有得到我想要的,就算要用到清除缓存的办法,那我也不想全部清除,只清除我的程序连接时产生的缓存就可以了
现在还是人类 2010-01-14
  • 打赏
  • 举报
回复
这样就可以了

'网络图片地址
Dim FileByte() As Byte '定义一个字节数组
'下载远程数据到字节数组
FileByte = Inet1.OpenURL("http://avatar.profile.csdn.net/9/E/E/2_SupermanKing.jpg", icByteArray)
'将字节数组中的数据保存到硬盘上
Open "C:\MyTemp.TMP" For Binary As #1
Put #1, 1, FileByte
Close #1
'加载硬盘上的文件到 Picture1 对象中
Picture1.Picture = LoadPicture("C:\MyTemp.TMP")
Kill "C:\MyTemp.TMP" '删除临时文件
lvheye 2010-01-14
  • 打赏
  • 举报
回复
一楼的朋友你可以解释一下代码的意思吗?
lqqq_2009 2010-01-14
  • 打赏
  • 举报
回复
看b不明白
现在还是人类 2010-01-14
  • 打赏
  • 举报
回复
如果想在内存中操作,可以使用GDIPlus技术,你可以在CSDN搜索一下GDIPlus或GDI+这几个关键字就有很多相关的信息或代码出来了
现在还是人类 2010-01-14
  • 打赏
  • 举报
回复
If UCase(Left(Text1.Text, 7)) = "HTTP://" Then
'网络图片地址
Dim FileByte() As Byte
FileByte = Inet1.OpenURL("http://avatar.profile.csdn.net/9/E/E/2_SupermanKing.jpg", icByteArray)
Open "C:\MyTemp.TMP" For Binary As #1
Put #1, 1, FileByte
Close #1
Picture1.Picture = LoadPicture("C:\MyTemp.TMP")
Kill "C:\MyTemp.TMP"
Else
'本地图片地址
Picture1.Picture = LoadPicture("C:\MyTemp.TMP")
End If

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧