Weiß jemand, wie man das HttpClient
in .Net 4.5 mit multipart/form-data
Upload benutzt?
Ich konnte im Internet keine Beispiele finden.
Weiß jemand, wie man das HttpClient
in .Net 4.5 mit multipart/form-data
Upload benutzt?
Ich konnte im Internet keine Beispiele finden.
Antworten:
Mein Ergebnis sieht so aus:
quelle
new MultipartFormDataContent(...)
ein ungültiges Grenzzeichen enthielt (möglicherweise das Trennzeichen "/"). Keine Fehler, nur keine Dateien auf dem Server - in meinem Fall Context.Request.Files.Count = 0 im API-Controller. Möglicherweise nur einNancy
Problem, aber ich schlage vor, stattdessen so etwas zuDateTime.Now.Ticks.ToString("x")
verwenden.key
undfileName
Parametercontent
( Bilddatei und upload.jpg in diesem Beispiel).Es funktioniert mehr oder weniger so (Beispiel mit einer Bild- / JPG-Datei):
(Sie können,
requestContent.Add()
was immer Sie wollen, einen Blick auf den Nachkommen von HttpContent werfen , um die verfügbaren Typen zum Übergeben zu sehen.)Wenn Sie fertig sind, finden Sie den Antwortinhalt darin
HttpResponseMessage.Content
, den Sie verwenden könnenHttpContent.ReadAs*Async
.quelle
// here you can specify boundary if you need---^
:)async
in der ersten Zeile undawait
in der Zeile vor der letzten sind nicht erforderlich.Dies ist ein Beispiel für das Posten von Zeichenfolgen und Dateistreams mit HTTPClient mithilfe von MultipartFormDataContent. Die Inhaltsdisposition und der Inhaltstyp müssen für jeden HTTP-Inhalt angegeben werden:
Hier ist mein Beispiel. Ich hoffe es hilft:
quelle
MultipartFormDataContent
. EinContent-Type
undContent-Disposition
ist in Ordnung, aber auf Server 2008 R2 (IIS 7.5) kann ich keine Dateien finden, es ist seltsam. Also mache ich als Antwort.Hier ist ein weiteres Beispiel
HttpClient
zum Hochladen von amultipart/form-data
.Es lädt eine Datei in eine REST-API hoch und enthält die Datei selbst (z. B. ein JPG) und zusätzliche API-Parameter. Die Datei wird direkt von der lokalen Festplatte über hochgeladen
FileStream
.Sehen Sie hier für das gesamte Beispiel mit zusätzlichen API spezifische Logik.
quelle
Versuchen Sie das, es funktioniert für mich.
quelle
TestServer.CreatClient()
Szenario eines Integrationstests für einen Daten- + Datei-Upload gesucht habe .Hier ist ein vollständiges Beispiel, das für mich funktioniert hat. Der
boundary
Wert in der Anforderung wird automatisch von .NET hinzugefügt.quelle
Beispiel mit Preloader Dotnet 3.0 Core
quelle
quelle
Ich füge ein Code-Snippet hinzu, das zeigt, wie eine Datei an eine API gesendet wird, die über das Verb DELETE http verfügbar gemacht wurde. Dies ist kein üblicher Fall, um eine Datei mit dem http-Verb DELETE hochzuladen, aber es ist zulässig. Ich habe die Windows NTLM-Authentifizierung für die Autorisierung des Anrufs angenommen.
Das Problem, mit dem man konfrontiert sein könnte, ist, dass alle Überladungen der
HttpClient.DeleteAsync
Methode keine Parameter fürHttpContent
die Art und Weise haben, wie wir sie in derPostAsync
Methode erhaltenSie benötigen die folgenden Namespaces oben in Ihrer C # -Datei:
PS Tut mir leid, dass so viele Blöcke (IDisposable Pattern) in meinem Code verwendet werden. Leider unterstützt die Syntax der Verwendung des Konstrukts von C # nicht die Initialisierung mehrerer Variablen in einer einzelnen Anweisung.
quelle
quelle