Szukałem i czytałem o tym i nie mogłem znaleźć niczego naprawdę użytecznego.
Piszę małą aplikację C # win, która umożliwia użytkownikom wysyłanie plików na serwer WWW, a nie przez FTP, ale przez HTTP przy użyciu POST. Pomyśl o tym jak o formularzu internetowym, ale działającym w aplikacji Windows.
Mam mój obiekt HttpWebRequest utworzony przy użyciu czegoś takiego
HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest
a także ustawić Method
, ContentType
i ContentLength
właściwości. Ale to tak daleko, jak mogę się posunąć.
To jest mój fragment kodu:
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)
{
}
Więc moje pytanie jest w zasadzie, jak mogę wysłać plik fie (plik tekstowy, obraz, dźwięk itp.) Z C # przez POST HTTP.
Dzięki!
c#
http
post
system.net
gabitoju
źródło
źródło
Odpowiedzi:
Korzystając z .NET 4.5 (lub .NET 4.0, dodając pakiet Microsoft.Net.Http z NuGet) można łatwiej symulować żądania formularzy. Oto przykład:
źródło
form.Add
jest opcjonalny i przydatny tylko w przypadku plików.Aby wysłać tylko plik raw :
Jeśli chcesz emulować formularz przeglądarki z rozszerzeniem
<input type="file"/>
, jest to trudniejsze. Zobacz tę odpowiedź, aby uzyskać odpowiedź typu multipart / form-data.źródło
http://www.testproject.com/SavedFiles
- zwróć uwagę na//
Dla mnie
client.UploadFile
nadal zawarłem zawartość w żądanie wieloczęściowe, więc musiałem to zrobić w ten sposób:źródło
Miałem ten sam problem, a poniższy kod doskonale odpowiadał na ten problem:
źródło
Musisz zapisać swój plik w strumieniu żądań:
źródło
Aby wysyłać pliki z tablic bajtowych:
źródło
źródło
Korzystanie z platformy .NET 4.5 podczas próby przesłania pliku POST formularza. Wypróbowałem większość powyższych metod, ale bezskutecznie. Znalazłem rozwiązanie tutaj https://www.c-sharpcorner.com/article/upload-any-file-using-http-post-multipart-form-data
Ale nie jestem chętny, ponieważ nie rozumiem, dlaczego nadal musimy radzić sobie z programowaniem na tak niskim poziomie w tych typowych zastosowaniach (powinno być ładnie obsługiwane przez framework)
źródło