标题:如何定向清除FTP下载文件后的缓存数据?
取消只看楼主
hxy8000
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2010-11-15
结帖率:85.71%
已结贴  问题点数:20 回复次数:6 
如何定向清除FTP下载文件后的缓存数据?
如何定向清除下载FTP文件后的缓存数据?
在客户端下载FTP的一个文件后,即使此后FTP中的该文件内容发生了更新,但客户端再次下载该文件,文件内容依然没有更新。经查,是IE缓存的原因。
手动解决办法:将客户端的IE历史浏览记录手动清除,再重新下载该文件,内容已经更新。
求助VFP程序实现:客户端下载FTP的一个文件后,在客户端定向清除这个IE缓存文件。
搜索更多相关主题的帖子: 缓存 FTP 清除 文件 定向 
2022-05-07 10:58
hxy8000
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2010-11-15
得分:0 
lcRemoteUrl="地址"
Declare Integer DeleteUrlCacheEntry In Wininet.Dll String szUrl,String szFileName,Integer dwReserved,Integer lpfnCB
=DeleteUrlCacheEntry(lcRemoteUrl) &&清理缓存

请教“地址”填写什么内容?
2022-05-08 10:06
hxy8000
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2010-11-15
得分:0 
以下是引用吹水佬在2022-5-7 16:56:10的发言:

试试 Windows API DeleteUrlCacheEntry()

这条语句还是不能将客户端的下载文件缓存数据清除!

请问:有没有更直接一点的语句?可以先找到这个缓存文件夹(“C:\Users\用户名\AppData\Local\Microsoft\Windows\INetCache”手动可以查到该文件夹,代码怎样获取客户端的这个文件夹?可能因操作系统不同或用户修改原因而造成该文件夹路径或名称不同),再删除该缓存文件夹下的下载缓存文件。
2022-05-08 14:36
hxy8000
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2010-11-15
得分:0 
以下是引用csyx在2022-5-8 20:32:12的发言:

Declare Long SHGetSpecialFolderPath in shell32 Long, String @, Long, Long
cPath = Replicate(Chr(0), 512)
If SHGetSpecialFolderPath(0, @ cPath, 32, 0) != 0
    ? Rtrim(cPath, Chr(0))
EndIf

非常感谢!通过以上代码,可以找到IE缓存文件夹了。但是,此文件夹内的缓存文件明明可以看到,也可手工删除,就是FILE()函数不能找到该文件,DELETE FILE 命令也无法删除该文件。真是奇怪!请问这是为何?
本人知道该缓存文件夹下还有下级目录及该缓存文件IE\ABC\**.**,但更是无法捕捉到"ABC"文件夹的名称,因为每次下载相同文件,该"ABC"文件夹的名称总是随机变化.
求助,即时删除从FTP下载文件后的IE缓存文件!
2022-05-09 01:37
hxy8000
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2010-11-15
得分:0 
该论坛有高手!高手又很热心助人!
非常感谢七楼csyx的帮助,您提供的代码基本可以解决我的问题(清除系统缓存数据,确保用户每次下载的文件是最新的文件,而不是可能的缓存旧文件)
顺附:*!*    ClearMyTracksByProcess函数 与IE缓存相关的参数详解:
*!*    //Temporary Internet Files  (删除Internet临时文件)  
*!*    //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8  
*!*    //Cookies (删除cookie)  
*!*    //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2  
*!*    //History (删除历史记录)  
*!*    //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1  
*!*    //Form Data (删除表单数据)  
*!*    //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16  
*!*    //Passwords (删除密码)  
*!*    //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32  
*!*    //Delete All  (全部删除)  
*!*    //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255  
*!*    //Delete All (全部删除,包括插件的设置和文件)  
*!*    //RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351  

虽然上述代码能达到基本使用要求,但还有一点点遗憾:如果能定向清除某一缓存文件就更佳,因为不愿因自己的软件需要而擅自清除客户端的所有缓存文件,以免影响用户可能需要他缓存文件的体验。
再次谢谢csyx及版主等!
2022-05-09 10:24
hxy8000
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2010-11-15
得分:0 
好的!欢迎各位继续赐教
2022-05-10 09:38
hxy8000
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2010-11-15
得分:0 
在VFP中,是否可在URL结尾外加个随机数,这样缓存中的URL就会不同,下载的相同文件就指向不同的URL,系统就会重新URL取新的文件了。如果可以,但不知怎么添加随机数。URL?A=**,好像也不能实现。
2022-05-11 12:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-509022-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015778 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved