Rubrik: HTML/Internet/Netzwerk · Internet / Browser / IE | VB-Versionen: VB6 | 19.12.08 |
Datei-Download via API-Funktion ohne Cache-Verwendung Mit diesem Code lassen sich Dateien oder Bilder immer aktuell aus dem Internet downloaden, ohne dass der Browser-Cache verwendet wird. | ||
Autor: Alfred Hellmüller | Bewertung: | Views: 18.318 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Mit nachfolgendem Tipp ist es ein Leichtes, Dateien und Bilder aus dem Internet zu laden:
Datei-Download via API-Funktion
Problem
Es kann vorkommen, dass der IE bei einer erneuten Download-Anforderung einfach den Browser-Cache verwendet und somit evtl. eine mittlerweile veraltete Datei unter dem angegebenen Namen speichert.
Für periodisch abgefragte Börsenkurse ein Horror! Man verpasst so die schönste (theoretische) Aufwärtsbewegung und wird Milliardär, ohne es zu bemerken! ;)
Die Lösung:
Mittels einer weiteren API-Funktion namens DeleteUrlCacheEntry lässt sich der URL-Cache für eine bestimmte URL (Datei) löschen, so dass sichergestellt ist, dass beim nächsten Download-Aufruf
auch wirklich die aktuelle Datei heruntergeladen wird.
Der Code zum Download muss somit wie folgt angepasst werden:
' Benötigte API-Funktionen Private 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 Private Declare Function DeleteUrlCacheEntry Lib "wininet.dll" _ Alias "DeleteUrlCacheEntryA" ( _ ByVal lpszUrlName As String) As Long
' Datei-Download mit oder ohne Leerung des URL-Cache Public Function FileDownload(ByVal sURL As String, _ ByVal sLocalFile As String, _ Optional ByVal bClearCache As Boolean = True) As Boolean Dim lResult As Long ' URL-Cache leeren? If bClearCache Then lResult = DeleteUrlCacheEntry(sURL) End If ' Download ausführen Screen.MousePointer = vbHourglass lResult = URLDownloadToFile(0, sURL, sLocalFile, 0, 0) Screen.MousePointer = vbNormal FileDownload = (lResult = 0) End Function
Aufrufbeispiel:
Dim sURL As String Dim sLocalFile As String ' URL-Link der Datei, die heruntergeladen werden soll sURL = "http://www.domain.de/file.zip" ' Dateiname auf dem lokalen System sLocalFile = "C:\Eigene Dateien\file.zip" ' Download starten und autom. URL-Cache leeren If FileDownload(sURL, sLocalFile) Then MsgBox "Download erfolgreich beendet!" Else MsgBox "Fehler beim Download: " & _ "Entweder existiert die URL nicht, oder Sie haben " & _ "einen ungültigen Dateinamen angegeben!", vbCritical End If
Soll der URL-Cache nicht gelöscht werden, einfach der Funktion als 3. Parameter den Wert False übergeben.