Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Получение размера файла с удаленного сервера Добавлено: 11.02.09 15:07  

Автор вопроса:  Vitalysan®
Доброго времени суток!
Не подскажите с помощью каких функиций получить размер закачиваемого из Интернет файла?

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #1 Добавлено: 11.02.09 15:26
HttpResponse.Headers("Content-Length";) ?

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #2 Добавлено: 11.02.09 15:33
Мле, вы смайлы сделали? )
  1. HttpResponse.Headers("Content-Length")


а еще если нажать на минус слева от "добавлено", будет
Ошибка!
 
Yep!
 

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 11.02.09 16:42
ага, понял) топик нельзя удалить

Ответить

Номер ответа: 4
Автор ответа:
 Vitalysan®



Вопросов: 25
Ответов: 61
 Профиль | | #4 Добавлено: 12.02.09 11:30
Полазив по просторам WWW узнал, что HttpResponse - встроенный объект VB.Net. Извиняюсь за неточный вопрос. Задача должна была реализована на VB6. Спс!

Ответить

Номер ответа: 5
Автор ответа:
 Kardinal



ICQ: 360041513 

Вопросов: 1
Ответов: 164
 Web-сайт: kg7.ru
 Профиль | | #5
Добавлено: 12.02.09 12:54

Winsock1.connect "www.rambler.ru",80
do while Winsock1.state <> 7
loop
Winsock1.senddata "GET /index.htm HTTP / 1.1" & vbCrLf & "Host: www.rambler.ru" & vbCrLf & vbCrLf

в событии прихода данных, в данных будет строка Content-length
после неё число в байтах.
Писал с телефона так что могут быть ошибки, если что исправлю

Ответить

Номер ответа: 6
Автор ответа:
 Vitalysan®



Вопросов: 25
Ответов: 61
 Профиль | | #6 Добавлено: 12.02.09 14:08
Код, который набросал на скорую руку:
  1. Option Explicit
  2.  
  3. Private Sub Command1_Click()
  4.     Winsock1.SendData "GET /download/the_bat/thebat_rus_4-1-11.msi HTTP/1.0" & vbCrLf & vbCrLf
  5. End Sub
  6.  
  7. Private Sub Form_Load()
  8.     Winsock1.Protocol = sckTCPProtocol
  9.     Winsock1.Connect "www.ritlabs.com", 80
  10.     While Not Winsock1.State = 7
  11.     DoEvents
  12.     Wend
  13. End Sub
  14.  
  15. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  16.     Dim sData As String
  17.     Winsock1.GetData sData
  18.     Text1.Text = Text1.Text & vbCrLf & sData
  19. End Sub


Ответ от сервера:
  1. HTTP/1.1 302 Found
  2. Server: nginx/0.5.35
  3. Date: Thu, 12 Feb 2009 11:03:19 GMT
  4. Content-Type: text/html; charset=iso-8859-1
  5. Connection: close
  6. Set-Cookie: PHPSESSID=97dab90669faff4690ae9fc98e52a64f; path=/
  7. Last-Modified: Thu, 12 Feb 2009 11:03:19 GMT
  8. P3P: policyref="/bitrix/p3p.xml", CP="NON DSP COR CUR ADM DEV PSA PSD OUR UNR BUS UNI COM NAV INT DEM STA"
  9. X-Powered-CMS: Bitrix Site Manager (b3e129836c2261db5e83cfa2ffa4c007)
  10. Set-Cookie: RITLABS_GUEST_ID=5859099; expires=Sun, 07-Feb-2010 11:03:19 GMT; path=/
  11. Set-Cookie: RITLABS_LAST_VISIT=12.02.2009+13%3A03%3A19; expires=Sun, 07-Feb-2010 11:03:19 GMT; path=/
  12. Request-URI: http://www.ritlabs.com/download/files3/the_bat/thebat_rus_4-1-11.msi
  13. Content-Location: http://www.ritlabs.com/download/files3/the_bat/thebat_rus_4-1-11.msi
  14. Location: http://www.ritlabs.com/download/files3/the_bat/thebat_rus_4-1-11.msi


Где-то, что-то не так :) И почему, если писать "HTTP/1.1" ответ от сервака получаю "HTTP/1.1 400 Bad Request"

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 12.02.09 16:16
  1. Private Sub Command1_Click()
  2.     Winsock1.SendData "GET /download/the_bat/thebat_rus_4-1-11.msi HTTP/1.0" & vbCrLf
  3. Winsock1.SendData "Host: www.ritlabs.com" & vbCrLf & vbCrLf
  4. End Sub

Ответить

Номер ответа: 8
Автор ответа:
 Vitalysan®



Вопросов: 25
Ответов: 61
 Профиль | | #8 Добавлено: 12.02.09 16:38
Спасибо! Но ответ от сервера не изменился. Нет в ответе строки Content-Length :(

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #9 Добавлено: 12.02.09 17:32
а кто вам сказал что сервер обязан вернуть заголовок Content-Length? Это зависит от его настроек... и потом кто мешает мне на стороне сервера писать в поток бесконечно длинный поток данных? Правильно, никто! Так что имхо не существует достоверного способа узнать размер скачиваемого контента если сервер не отдает этот заловок..

Ответить

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



ICQ: 360041513 

Вопросов: 1
Ответов: 164
 Web-сайт: kg7.ru
 Профиль | | #10
Добавлено: 12.02.09 23:18
HTTP/1.1 302 Found!!!!!!!!!!!!! - он перенаправляет а значит и размер сразу не передаст

Ответить

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



Вопросов: 58
Ответов: 4255
 Профиль | | #11 Добавлено: 12.02.09 23:22
он перенаправляет а значит и размер сразу не передаст

в любом случае не всегда и не все сервера отдают этот заголовок.. это следует учитывать.

Ответить

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



ICQ: 360041513 

Вопросов: 1
Ответов: 164
 Web-сайт: kg7.ru
 Профиль | | #12
Добавлено: 13.02.09 09:46
Что есть то есть. Хотя если это страница то проще по байтно

Ответить

Номер ответа: 13
Автор ответа:
 Vitalysan®



Вопросов: 25
Ответов: 61
 Профиль | | #13 Добавлено: 13.02.09 09:59
  1. Option Explicit
  2.  
  3. Private Sub Form_Load()
  4.     Dim lngLength As Long, sAnswer As String
  5.     Inet1.Execute "http://www.ritlabs.com/download/the_bat/thebat_rus_4-1-11.msi", "HEAD"
  6.     Do
  7.         If Not Inet1.StillExecuting Then Exit Do
  8.     DoEvents
  9.     Loop
  10.     lngLength = CLng(Inet1.GetHeader("Content-length"))
  11.     sAnswer = sAnswer & "Content-length: " & CStr(lngLength) & vbCrLf
  12.     Text1.Text = sAnswer
  13. End Sub



Спасибо всем! Тема закрыта.

Ответить

Страница: 1 |

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



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