powered by simpleCommunicator - 2.0.57     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / HTTPWebrequest post загрузка файла
7 сообщений из 7, страница 1 из 1
HTTPWebrequest post загрузка файла
    #38168271
ильдар4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Неоходимо загрузить файл на сервер. Использую следующий код:

private static string UploadFilesToRemoteUrl(string url, string file, NameValueCollection nvc)
{
string boundary = "----------------------------" + DateTime.Now.Ticks.ToString("x");

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "multipart/form-data; boundary=" + boundary;
httpWebRequest.Method = "POST";
httpWebRequest.KeepAlive = true;

byte[] boundarybytes = System.Text.Encoding.UTF8.GetBytes("\r\n--" + boundary + "\r\n");

string headerTemplate = "Content-Disposition: form-data; name=\"{0}\";filename=\"{1}\"\r\n Content-Type: application/octet-stream\r\n\r\n";

string header = string.Format(headerTemplate, "file", file, "application/binary");

byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header);

httpWebRequest.ContentLength = new FileInfo(file).Length + headerbytes.Length + (boundarybytes.Length * 2) + 2;

Stream requestStream = httpWebRequest.GetRequestStream();


string formdataTemplate = "Content-Disposition: form-data; name=\"{0}\"\r\n\r\n{1}";
foreach (string key in nvc.Keys)
{
requestStream.Write(boundarybytes, 0, boundarybytes.Length);
string formitem = string.Format(formdataTemplate, key, nvc[key]);
byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem);
requestStream.Write(formitembytes, 0, formitembytes.Length);
}
requestStream.Write(boundarybytes, 0, boundarybytes.Length);


requestStream.Write(boundarybytes, 0, boundarybytes.Length);


requestStream.Write(headerbytes, 0, headerbytes.Length);


FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read);


byte[] buffer = new byte[4096];

int bytesRead = 0;

while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
requestStream.Write(buffer, 0, bytesRead);
requestStream.Flush();
}

boundarybytes = System.Text.Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");

requestStream.Write(boundarybytes, 0, boundarybytes.Length);

requestStream.Close();
fileStream.Close();

WebResponse webResponse = httpWebRequest.GetResponse();

Stream responseStream = webResponse.GetResponseStream();
StreamReader responseReader = new StreamReader(responseStream);

string responseString = responseReader.ReadToEnd();

webResponse.Close();

return responseString;
}

После вызова метода получаю ошибку - Bytes to be written to the stream exceed the Content-Length bytes size specified. В чем причина?
...
Рейтинг: 0 / 0
HTTPWebrequest post загрузка файла
    #38168281
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ContentLength посчитал не правильно, что же еще. Ее вообще считать не надо, HttpWebRequest сам почитает длину того, что в него понапихали, и создаст заголовок.
...
Рейтинг: 0 / 0
HTTPWebrequest post загрузка файла
    #38168286
ильдар4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

спасибо
...
Рейтинг: 0 / 0
HTTPWebrequest post загрузка файла
    #38168299
ильдар4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ильдар4,

При загрузке больших файлов выдает ошибку Timeout exception
...
Рейтинг: 0 / 0
HTTPWebrequest post загрузка файла
    #38168344
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну не грузи большие файлы, чо
или увеличь таймаут на сервере, если ты им управляешь
...
Рейтинг: 0 / 0
HTTPWebrequest post загрузка файла
    #38168350
ильдар4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Необходимо грузить большие файлы
...
Рейтинг: 0 / 0
HTTPWebrequest post загрузка файла
    #38168415
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скажи это владельцу сервера
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / HTTPWebrequest post загрузка файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]