Я искал и читал об этом и не смог найти ничего действительно полезного.
Я пишу небольшое приложение Win C #, которое позволяет пользователю отправлять файлы на веб-сервер не по FTP, а по HTTP с использованием POST. Думайте об этом как о веб-форме, но работающей в приложении Windows.
У меня есть объект HttpWebRequest, созданный с использованием чего-то вроде этого
HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest
а также установите свойства Method
, ContentType
и ContentLength
. Но это все, что я могу сделать.
Это мой фрагмент кода:
HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest;
req.KeepAlive = false;
req.Method = "POST";
req.Credentials = new NetworkCredential(user.UserName, user.UserPassword);
req.PreAuthenticate = true;
req.ContentType = file.ContentType;
req.ContentLength = file.Length;
HttpWebResponse response = null;
try
{
response = req.GetResponse() as HttpWebResponse;
}
catch (Exception e)
{
}
Итак, мой вопрос в основном заключается в том, как я могу отправить файл (текстовый файл, изображение, аудио и т. Д.) С C # через HTTP POST.
Спасибо!
c#
http
post
system.net
габитоджу
источник
источник
Ответы:
Используя .NET 4.5 (или .NET 4.0, добавив пакет Microsoft.Net.Http из NuGet), есть более простой способ имитировать запросы формы. Вот пример:
источник
form.Add
является необязательным и полезен только для файлов.Чтобы отправить файл необработанного только :
Если вы хотите имитировать форму браузера с расширением
<input type="file"/>
, то это сложнее. См. Этот ответ для ответа multipart / form-data.источник
http://www.testproject.com/SavedFiles
- обратите внимание на//
Я
client.UploadFile
все еще завернул контент в составной запрос, поэтому мне пришлось сделать это так:источник
У меня была такая же проблема, и следующий код отлично ответил на эту проблему:
источник
Вам нужно записать свой файл в поток запроса:
источник
Чтобы публиковать файлы как из байтовых массивов:
источник
источник
Использование .NET 4.5 для загрузки файла POST формы. Пробовал большинство вышеперечисленных методов, но безрезультатно. Нашел решение здесь https://www.c-sharpcorner.com/article/upload-any-file-using-http-post-multipart-form-data
Но мне это не нравится, так как я не понимаю, почему нам все еще нужно иметь дело с таким низкоуровневым программированием в этих общих случаях использования (должно хорошо обрабатываться фреймворком)
источник