Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос:  Как принять файл в переменную ? Добавлено: 16.02.05 22:56  

Автор вопроса:  VisBas | Web-сайт: chipmicro.narod.ru
Нет, я не только что родился. У меня проблемма,вот рабочий код:

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-сайт: chipmicro.narod.ru
 Профиль | | #1
Добавлено: 17.02.05 10:27
C этим уже разобрался..

У меня новый вопрос:
Почему я не возвращается размер некоторых ф-лов.
Например:

Inet1.URL = "http://www.yandex.ru/"
Inet1.Execute , "HEAD"

'задержка, пока запрос не выполнен
Do
  If Not Inet1.StillExecuting Then Exit Do
  ;DoEvents
Loop

Text1 = Inet1.GetHeader

Не РАБОТАЕТ, а если заменить URL например на этот
Inet1.URL = "http://www.vbrussian.com/CONF/view_body.asp?SelMsgID=30501"

размер возвращается. Почему так ?

Ответить

Номер ответа: 2
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 17.02.05 11:48
Прителнетился, посмотрел. Ответ банален: потому что Яндекс не возвращает Content-Length, а vbrussian.com возвращает. Почему? Хз, но наверно потому, что у Яндекса Апач, а у vbrussian IIS

Ответить

Номер ответа: 3
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 18.02.05 20:19
он все-таки как то заранее получает размер
Афаик, качалки не используют HEAD для получения размера файла, берут это непосредственно из обычного ответа на GET

Ответить

Номер ответа: 6
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #6
Добавлено: 18.02.05 21:38
Но ведь при GET запросе начинает скачиваться файл..

Ответить

Номер ответа: 7
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #7
Добавлено: 18.02.05 21:54
Вот ответ yandex'a на GET запрос:


HTTP/1.1 200 OK
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-сайт: chipmicro.narod.ru
 Профиль | | #8
Добавлено: 19.02.05 10:39
Задача бональная - сделать прогресс приема файла.
Неужели никто не может помочь ?

Ответить

Номер ответа: 9
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #9
Добавлено: 19.02.05 10:47
Если ответ chunked, то это, скорее всего, невозможно

Ответить

Номер ответа: 10
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #10
Добавлено: 19.02.05 10:51
Тогда выходит MassDownloader делает невозможное..

Ответить

Номер ответа: 11
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #11
Добавлено: 19.02.05 15:39
Обоснуй

Ответить

Номер ответа: 12
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #12
Добавлено: 19.02.05 16:13
Я давно использую MassDownloader и очень редко он не возвращает размер заранее.

Я тут заметил интересную особенность при скачивании ф-лов с narod.ru :
Если запрашиваеш заголовок zip файла, то он содержит размер, а если htm то нет, однако MassDownloader все равно как то его определяет..

Ответить

Номер ответа: 13
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #13
Добавлено: 19.02.05 17:33
Поставь любой HTTP-сниффер и посмотри, какой запрос им используется

Ответить

Номер ответа: 14
Автор ответа:
 VisBas



Вопросов: 44
Ответов: 127
 Web-сайт: chipmicro.narod.ru
 Профиль | | #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 может найдешь
чего...

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам