Страница: 1 | 2 |
Вопрос: Как принять файл в переменную ?
Добавлено: 16.02.05 22:56
Автор вопроса: VisBas | Web-сайт:
Нет, я не только что родился. У меня проблемма,вот рабочий код:
Private Sub Inet1_StateChanged(ByVal State As Integer)
Dim vtData() As Byte
Dim intFile As Long
Select Case State
'здесь можно обрабатывать другие события
Case icResponseCompleted '12
'открываем файл для записи принимаемых данных
intFile = FreeFile
Open Me.txtFileName For Binary Access Write As #intFile
'принимаем первую порцию данных
vtData = Inet1.GetChunk(1024, icByteArray)
Do While LenB(CStr(vtData)) > 0
Put #intFile, , vtData
'следующая порция данных
vtData = Inet1.GetChunk(1024, icByteArray)
Loop
Put #intFile, , vtData
Close #intFile
End Select
End Sub
Здесь файл сразу записывается на диск. Как мне принять файл в строковую преременную, и вообще возможно ли это (файл бинарный).
Почему не работает к примеру вот этот код:
Select Case State
'здесь можно обрабатывать другие события
Case icResponseCompleted '12
'принимаем первую порцию данных
vtData = Inet1.GetChunk(1024, icByteArray)
For F = 0 To 1023
vtData2 = vtData2 & vtData(F)
Next F
Do While LenB(CStr(vtData)) > 0
'следующая порция данных
vtData = Inet1.GetChunk(1024, icByteArray)
For F = 0 To 1023
vtData2 = vtData2 & vtData(F)
Next F
Loop
End Select
По идее в vtData2 должен быть этот ф-л, но в vtData2 какаято ерунда размер которой больше самого ф-ла. Почему так ?
Ответы
Всего ответов: 16
Номер ответа: 1
Автор ответа:
VisBas
Вопросов: 44
Ответов: 127
Web-сайт:
Профиль | | #1
Добавлено: 17.02.05 10:27
C этим уже разобрался..
У меня новый вопрос:
Почему я не возвращается размер некоторых ф-лов.
Например:
Inet1.URL = "http://www.yandex.ru/"
Inet1.Execute , "HEAD"
'задержка, пока запрос не выполнен
Do
If Not Inet1.StillExecuting Then Exit Do
 oEvents
Loop
Text1 = Inet1.GetHeader
Не РАБОТАЕТ, а если заменить URL например на этот
Inet1.URL = "http://www.vbrussian.com/CONF/view_body.asp?SelMsgID=30501"
размер возвращается. Почему так ?
Номер ответа: 2
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #2
Добавлено: 17.02.05 11:48
Прителнетился, посмотрел. Ответ банален: потому что Яндекс не возвращает Content-Length, а vbrussian.com возвращает. Почему? Хз, но наверно потому, что у Яндекса Апач, а у vbrussian IIS
Номер ответа: 3
Автор ответа:
VisBas
Вопросов: 44
Ответов: 127
Web-сайт:
Профиль | | #3
Добавлено: 18.02.05 19:46
Самое интресное, что когда скачиваеш этот файл(index.htm) MassDownloader'ом он все-таки как то заранее получает размер. А как ?
Номер ответа: 4
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #4
Добавлено: 18.02.05 20:16
GopherFindFirstFile -> GOPHER_FIND_DATA Structure -> SizeLow
Номер ответа: 5
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #5
Добавлено: 18.02.05 20:19
Номер ответа: 6
Автор ответа:
VisBas
Вопросов: 44
Ответов: 127
Web-сайт:
Профиль | | #6
Добавлено: 18.02.05 21:38
Но ведь при GET запросе начинает скачиваться файл..
Номер ответа: 7
Автор ответа:
VisBas
Вопросов: 44
Ответов: 127
Web-сайт:
Профиль | | #7
Добавлено: 18.02.05 21:54
Вот ответ yandex'a на GET запрос:
Date: Fri, 18 Feb 2005 18:49:56 GMT
Server: Apache/1.3.6 (Unix) PHP/4.0.1pl2 mod_perl/1.19 mod_deflate/1.0.21 rus/PL28.15
Set-Cookie: yandexuid=1516271108752596; path=/; domain=.yandex.ru; expires=Friday, 31-Dec-10 23:59:59 GMT
Last-Modified: Fri, 18 Feb 2005 18:31:29 GMT
Cache-Control: max-age=300, private, proxy-revalidate
Expires: Fri, 18 Feb 2005 18:54:56 GMT
Connection: close
Content-Type: text/html; charset=windows-1251
Размера здесь нет..
Номер ответа: 8
Автор ответа:
VisBas
Вопросов: 44
Ответов: 127
Web-сайт:
Профиль | | #8
Добавлено: 19.02.05 10:39
Задача бональная - сделать прогресс приема файла.
Неужели никто не может помочь ?
Номер ответа: 9
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #9
Добавлено: 19.02.05 10:47
Если ответ chunked, то это, скорее всего, невозможно
Номер ответа: 10
Автор ответа:
VisBas
Вопросов: 44
Ответов: 127
Web-сайт:
Профиль | | #10
Добавлено: 19.02.05 10:51
Тогда выходит MassDownloader делает невозможное..
Номер ответа: 11
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #11
Добавлено: 19.02.05 15:39
Обоснуй
Номер ответа: 12
Автор ответа:
VisBas
Вопросов: 44
Ответов: 127
Web-сайт:
Профиль | | #12
Добавлено: 19.02.05 16:13
Я давно использую MassDownloader и очень редко он не возвращает размер заранее.
Я тут заметил интересную особенность при скачивании ф-лов с narod.ru :
Если запрашиваеш заголовок zip файла, то он содержит размер, а если htm то нет, однако MassDownloader все равно как то его определяет..
Номер ответа: 13
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #13
Добавлено: 19.02.05 17:33
Поставь любой HTTP-сниффер и посмотри, какой запрос им используется
Номер ответа: 14
Автор ответа:
VisBas
Вопросов: 44
Ответов: 127
Web-сайт:
Профиль | | #14
Добавлено: 19.02.05 17:51
Я пробовал воспользоваться DaSharm'овским, что то ничерта не получается..
Номер ответа: 15
Автор ответа:
ZagZag
ICQ: 295002202
Вопросов: 87
Ответов: 1684
Профиль | | #15
Добавлено: 19.02.05 17:55
Честно говоря я не знаю никакого MassDownloader, но думаю что Яндекс не
возвращает размер, т. к. экономит траффик по несколько десятков вопросов
в секунду - заметная экономикя.
Но я знаю программку Surf Pilot - она тоже кусками страницу Яндекса получает
и програсс бар отображает.
Может есть какой HTTP запрос? Мне искать влом.
Посмотри справочник по HTTP на http://www.zagzag.xaker.ru может найдешь
чего...