Czy ktoś wie, jak korzystać z HttpClient
.Net 4.5 z multipart/form-data
uploadem?
Nie mogłem znaleźć żadnych przykładów w internecie.
Czy ktoś wie, jak korzystać z HttpClient
.Net 4.5 z multipart/form-data
uploadem?
Nie mogłem znaleźć żadnych przykładów w internecie.
Odpowiedzi:
mój wynik wygląda następująco:
źródło
new MultipartFormDataContent(...)
zawierał nieprawidłowy znak granicy (może to być separator „/”). Żadnych błędów, po prostu żadnych plików wysłanych na serwer - w moim przypadku Context.Request.Files.Count = 0 w kontrolerze API. Prawdopodobnie tylkoNancy
problem, ale sugeruję użycie czegoś takiegoDateTime.Now.Ticks.ToString("x")
.key
ifileName
docontent
( w tym przykładzie bilddatei i upload.jpg ).Działa mniej więcej tak (przykład z użyciem pliku image / jpg):
(Możesz
requestContent.Add()
cokolwiek chcesz, spójrz na element podrzędny HttpContent aby zobaczyć dostępne typy do przekazania)Po zakończeniu znajdziesz treść odpowiedzi w środku
HttpResponseMessage.Content
, z którą możesz skonsumowaćHttpContent.ReadAs*Async
.źródło
// here you can specify boundary if you need---^
:)async
na pierwszej linii iawait
na linii przed ostatnią są zbędne.To jest przykład publikowania strumienia ciągu i pliku za pomocą HTTPClient przy użyciu MultipartFormDataContent. Dyspozycja zawartości i typ zawartości muszą być określone dla każdego elementu HTTPContent:
Oto mój przykład. Mam nadzieję, że to pomoże:
źródło
MultipartFormDataContent
. Uznanie dla panaContent-Type
iContent-Disposition
jest OK, ale na serwerze 2008 R2 (IIS 7.5) nie mogę znaleźć plików, to dziwne. Więc robię jako odpowiedź.Oto kolejny przykład użycia
HttpClient
do przesłania plikumultipart/form-data
.Przesyła plik do REST API i zawiera sam plik (np. JPG) oraz dodatkowe parametry API. Plik jest przesyłany bezpośrednio z dysku lokalnego za pośrednictwem
FileStream
.Zobacz tutaj pełny przykład, w tym dodatkową logikę specyficzną dla interfejsu API.
źródło
Spróbuj, to działa dla mnie.
źródło
TestServer.CreatClient()
scenariuszu .NET Core testu integracji dla przesyłania danych + pliku.Oto pełna próbka, która zadziałała dla mnie.
boundary
Wartość w żądaniu jest dodawany automatycznie przez .NET.źródło
Przykład z preloaderem Dotnet 3.0 Core
źródło
źródło
Dodaję fragment kodu, który pokazuje, jak wysłać plik do interfejsu API, który został ujawniony przez czasownik USUŃ http. Nie jest to typowy przypadek przesyłania pliku z czasownikiem DELETE http, ale jest to dozwolone. Założyłem uwierzytelnianie Windows NTLM do autoryzacji połączenia.
Problem, z którym można się spotkać, polega na tym, że wszystkie przeciążenia
HttpClient.DeleteAsync
metody nie mają parametrów dotyczącychHttpContent
sposobu, w jaki otrzymujemy ją wPostAsync
metodziePotrzebujesz poniższych przestrzeni nazw w górnej części pliku C #:
PS Przepraszam, że tak wielu używa bloków (wzorzec IDisposable) w moim kodzie. Niestety, składnia using konstruktu języka C # nie obsługuje inicjowania wielu zmiennych w jednej instrukcji.
źródło
źródło