Страницы: 1
RSS
Скачивание файла в Visual Basic, XMLHTTP.Open "GET" скачивает файл из кеша, а не из интернета
 
Доброго дня.
Обнаружил, что мой скрипт работает с файлом несколько месячной давности, хотя, по идее, должен работать всегда с актуальным файлом.
Дата файла в кеше компьютера совпадает с датой файла, с которой работает скрипт.
т.е. файл был скачан компьютером с себя же
Подскажите пожалуйста, как скачивать файл игнорируя кеш?

Информация о системе:
Office 2003
Win 7

Текст скачивания файла (имя сайта и файла изменены)
Код
Set XMLHTTP = CreateObject("Microsoft.XMLHTTP";)
XMLHTTP.Open "GET", Replace("[URL=http://site.ru/files/file.zip]http://site.ru/files/file.zip[/URL]", "\", "/";), "False"
XMLHTTP.send
If XMLHTTP.statustext = "OK" Then
Set ADOStream = CreateObject("ADODB.Stream";)
ADOStream.Type = 1: ADOStream.Open
ADOStream.Write XMLHTTP.responseBody
ADOStream.SaveToFile "C:\Users\MyUser\Desktop\zagotovka\1\file.zip", 2
ADOStream.Close: Set ADOStream = Nothing
DownloadFile = True
Else
MsgBox "Не удаётся скачать файл" & XMLHTTP.statustext
End If
Set XMLHTTP = Nothing
Изменено: erros - 08.04.2015 12:53:49
 
т.е. я использовал пример этот
http://excelvba.ru/code/DownloadFile
Значения
СсылкаНаФайл$ =
ПутьДляСохранения$ =

Задал необходимые
Файл скачивается январский, хотя на сайте есть сегодняшний

Что я попробовал:
Взял этот пример и вставил его в новый модуль т.е. никакой другой информации в модуле не было
Качает гад январский файл всё равно... :(

Пример вывешиваю тут, чтобы вам туда не ходить
Код
Sub ПримерИспользования()
    СсылкаНаФайл$ = "http://excelvba.ru/sites/default/files/3.jpg"
    ПутьДляСохранения$ = "C:\ПЖиВ.jpg"
    ' скачиваем файл из интернета
    DownloadFile СсылкаНаФайл$, ПутьДляСохранения$
    ' открываем скачанный файл
    CreateObject("wscript.shell").Run """" & ПутьДляСохранения$ & """"
End Sub

Function DownloadFile(ByVal URL$, ByVal LocalPath$) As Boolean
    ' Функция скачивает файл по ссылке URL$
    ' и сохраняет его под именем LocalPath$
    Dim XMLHTTP, ADOStream, FileName
    On Error Resume Next: Kill LocalPath$
    Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
    XMLHTTP.Open "GET", Replace(URL$, "\", "/"), "False"
    XMLHTTP.send
    If XMLHTTP.statustext = "OK" Then
        Set ADOStream = CreateObject("ADODB.Stream")
        ADOStream.Type = 1: ADOStream.Open
        ADOStream.Write XMLHTTP.responseBody
        ADOStream.SaveToFile LocalPath$, 2
        ADOStream.Close: Set ADOStream = Nothing
        DownloadFile = True
    Else
        'MsgBox "Не удаётся скачать файл " & XMLHTTP.statustext
    End If
    Set XMLHTTP = Nothing
End Function
Изменено: erros - 08.04.2015 13:17:10
 
erros, у Вас сообщение - сплошной error
Уберите лишние пустые строки
Код оформляется кнопкой <...>
Длинный листинг лучше под спойлер (кнопка SP)
тренируйтесь.
 
Если попробовать найти этот файл на компьютере, то вот что находится
Фай как раз январский, файл в кеше, файл "скачивается" оттуда

Как игнорировать кеш при скачивании файлов данным методом?
Или можно загнать в скрипт очистку кеша?
Подскажите пожалуйста как...

 
Зашел в Internet Explorer 10, Удалил Временные файлы интернета и веб сайтов
Теперь файл скачивается сегодняшний
Но завтра то тое будет скачиваться с кеша, т.е. 9 апреля скачается от 8 апреля...

Что бы такого умного придумать, чтобы обходить эту проблему?
 
Код
XMLHTTP.Open "GET", Replace(URL$, "", "/") & "?" & Rnd, "False"
F1 творит чудеса
Страницы: 1
Наверх