Страница: 1 |
|
Вопрос: Определение размера файла в интернете
|
Добавлено: 11.10.10 01:58
|
|
Автор вопроса: macolor | ICQ: 7556157
|
Всем привет. Такая ситуация: необходимо узнать размер загружаемого файла в интернете. Нужно это для progress bar'a. В VB .net новичок. Нашёл несколько примеров, но не один либо не работает, либо немогу применить. И ещё одна небольшая сложность: Link к файлу не совсем прямой, тоесть ссылка в программе указывает на http://test.ru/123.mp3, а на самом деле переадресует и качает, например с http://test.ru/edw44t5twtgw/123.mp3 - эту проблему я решил использованием "Net.WebClient".
Вообщем такой небольшой код:
...
Dim wc As New Net.WebClient
Dim fs As New IO.FileStream("c:\temp.tmp", IO.FileMode.Create)
Dim bw As New IO.BinaryWriter(fs)
Dim a1() As Byte
'здесь желательно нужно вставить код получения размера файла
a1 = wc.DownloadData("http://test.ru/123.mp3")
bw.Write(a1)
bw.Close()
fs.Close()
...
Ответить
|
Номер ответа: 4 Автор ответа: Vlad
Вопросов: 6 Ответов: 22
|
Профиль | | #4
|
Добавлено: 24.11.10 12:40
|
а какую ссылку ты хочешь там указать, если на сам файл, то этого делать не нужно, вернее нужно но не здесь
вот так выполняется запрос:
-
- Dim myHttpWebRequest As HttpWebRequest = HttpWebRequest.Create(Url)
- myHttpWebRequest.Proxy = New WebProxy("127.0.0.1", 8888)
- myHttpWebRequest.UserAgent = "Mozila/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2;"
- myHttpWebRequest.Accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*"
- myHttpWebRequest.Headers.Add("Accept-Language", "ru")
- myHttpWebRequest.ContentType = "audio/mpeg"
-
- Dim myHttpWebResponse As HttpWebResponse = myHttpWebRequest.GetResponse()
-
- ProgressBar1.Maximum = myHttpWebResponse.ContentLength
- ProgressBar1.Maximum = 100
-
- Do
- Application.DoEvents()
- ProgressBar1.Value = CInt(myHttpWebRequest.GetResponse.ContentLength * 100 \ myHttpWebResponse.ContentLength)
- Loop While myHttpWebRequest.GetResponse.ContentLength < ws.ContentLength
-
- Dim str As Stream = myHttpWebResponse.GetResponseStream()
- Dim inBuf(myHttpWebResponse.ContentLength) As Byte
- Dim bytesToRead As Long = CInt(inBuf.Length)
- Dim bytesRead As Long = 0
-
- While bytesToRead > 0
- Dim n As Integer = str.Read(inBuf, bytesRead, bytesToRead)
- If n = 0 Then Exit While
- bytesRead += n
- bytesToRead -= n
- End While
-
- Dim fstr As New FileStream("temp.mp3", FileMode.OpenOrCreate, FileAccess.Write)
- fstr.Write(inBuf, 0, bytesRead)
- str.Close()
- fstr.Dispose()
- fstr.Close()
-
где то примерно так, но это не рабочий вариант, т.к. сам говориш что там редирект стоит, поэтому сначала проанализируй сам трафик вероятнее всего там еще нужно принимать куки перед моим вариантом и потом уже в моем варианте их передавать
Ответить
|
Страница: 1 |
Поиск по форуму