0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 10
1

Загрузка файла из сети с определенной позиции

01.01.2015, 14:48. Показов 3464. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Каким образом можно скачать файл из сети с нужного места?
У меня есть код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(Info.Url);                
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
_responseStream = response.GetResponseStream();
byte[] buffer= new byte[BUFFER_SIZE];
            
_responseStream.Seek(BytesDownloaded, SeekOrigin.Begin);
 
fileStream.Seek(BytesDownloaded, SeekOrigin.Begin);
while (Info.State==DownloadState.DOWNLOADING) {
    try {
        int size = _responseStream.Read(buffer, 0, buffer.Length);
        if (size == 0) {
            Info.State = DownloadState.COMPLETED;
            break;
        }
        fileStream.Write(buffer, 0, size);
    } catch (Exception ) {
            Info.State = DownloadState.ERROR;
    }
               
}
Выскактвает исключение: Этот поток не поддерживает операций поиска. на строчке
C#
1
_responseStream.Seek(BytesDownloaded, SeekOrigin.Begin);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.01.2015, 14:48
Ответы с готовыми решениями:

Считывание файла с определенной позиции
Здравствуйте, имеется файл, содержащий в себе строки и столбцы с буквами и цифрами, необходимо...

Перенести текст файла на определенной позиции на новую строку
Здравствуйте, имеется входной текстовый файл, в нем есть такой вот текст например: int i = 0;...

Скопировать часть строки с определенной позиции и определенной длины в другую строку
Ввести с клавиатуры строку. Скопировать часть строки с определенной позиции и определенной длины в...

Загрузка файла определенной структуры
Всем привет! Помогите пожалуйста решить проблему. Имеется простенькая стековая виртуальная...

5
Администратор
Эксперт .NET
16571 / 13013 / 5119
Регистрация: 17.03.2014
Сообщений: 26,554
Записей в блоге: 1
01.01.2015, 15:04 2
jitu, для этого нужно использовать Range заголовок. Добавь после первой строки:
C#
1
request.Headers.Add(HttpRequestHeader.Range, string.Format("bytes={0}-", BytesDownloaded));
Надо иметь в виду что не все серверы поддерживают такой заголовок и не для всех файлов. Получив ответ проверь статус (должен быть 206) и наличие заголовка Content-Range. Подробности описаны в спецификации протокола HTTP.
0
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 10
01.01.2015, 15:58  [ТС] 3
OwenGlendower,
Вылезает исключение: Additional information: Этот заголовок необходимо изменить с помощью соответствующего свойства.
Как я понял, вместо этого надо использовать метод AddRange, но он принимает параметр типа int, а что делать если размер файла превышает ограничения int?
0
Администратор
Эксперт .NET
16571 / 13013 / 5119
Регистрация: 17.03.2014
Сообщений: 26,554
Записей в блоге: 1
01.01.2015, 16:44 4
jitu, у AddRange есть перегрузки принимающие long. Этого должно хватить
0
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 10
01.01.2015, 17:03  [ТС] 5
OwenGlendower, Да, с версии 4 есть, но у меня .NET 2.0.
Эх, пришлось искать костыль: http://forums.codeguru.com/sho... ost1794639
0
Администратор
Эксперт .NET
16571 / 13013 / 5119
Регистрация: 17.03.2014
Сообщений: 26,554
Записей в блоге: 1
01.01.2015, 17:33 6
jitu, одна из тех редких ситуаций когда копание в private членах класса через рефлексию является единственным решением. Напиши комментарий к коду чтобы помнить что при переходе на .NET 4 нужно заменить костыль на вызов библиотечного метода.
0
01.01.2015, 17:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2015, 17:33
Помогаю со студенческими работами здесь

Строка: Скопировать часть строки с определенной позиции и определенной длины в другую строку
Скопировать часть строки с определенной позиции и определенной длины в другую строку. Например:...

Загрузка в TextBox определенной строки файла
Из текстового файла расширения .txt нужно перенести определенную строчку в TextBox, обязательно...

Загрузка в DataGridView определённой строки из txt-файла
Здравствуйте. Есть код, который загружает все строки текстового файла в DataGridView : ... if...

Загрузка файла из сети интернет
Добрый день. Я, после большого перерыва, вернулся к своему проекту. Нашел примеры как скачивать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru