HTTP-POST-Datei-Upload in C#
Das Senden von Dateien über HTTP POST ist eine häufige Aufgabe in Webanwendungen. In C# können Sie HttpWebRequest
-Klassen und MultipartFormDataContent
-Objekte verwenden, um diese Funktionalität zu erreichen.
HttpWebRequest-Objekt erstellen
Erstellen Sie zunächst ein HttpWebRequest
-Objekt und geben Sie den URI des Webservers an. Setzen Sie dann das Method
-Attribut auf „POST“ und das ContentType
-Attribut auf den entsprechenden Inhaltstyp der zu sendenden Datei.
<code class="language-csharp">HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest; req.Method = "POST"; req.ContentType = file.ContentType;</code>
Datei bereit zum Hochladen
Um eine Datei zu senden, erstellen Sie ein MultipartFormDataContent
-Objekt und fügen Sie es in die Anfrage ein. MultipartFormDataContent
Ermöglicht das Senden von Formulardaten und Binärdaten in einer Anfrage.
<code class="language-csharp">using (var formData = new MultipartFormDataContent()) { formData.Add(new StringContent(file.Name), "file"); formData.Add(new StreamContent(file.Content), file.Name, file.Name); }</code>
Anfrage senden
Abschließend senden Sie die Anfrage mit GetResponse()
oder GetResponseAsync()
an den Webserver.
<code class="language-csharp">HttpWebResponse response = null; try { response = req.GetResponse() as HttpWebResponse; } catch (Exception e) { // 处理异常 }</code>
Alternativen für .NET 4.0 und niedriger
Für .NET 4.0 und niedriger können Sie das Microsoft.Net.Http
-Paket von NuGet verwenden, um den Datei-Upload-Prozess zu vereinfachen:
<code class="language-csharp">using System.Net.Http; using System.Net.Http.Headers; private async Task<System.IO.Stream> Upload(string actionUrl, string paramString, Stream paramFileStream, byte[] paramFileBytes) { using (var client = new HttpClient()) { using (var formData = new MultipartFormDataContent()) { formData.Add(new StringContent(paramString), "param1"); formData.Add(new StreamContent(paramFileStream), "file1"); formData.Add(new ByteArrayContent(paramFileBytes), "file2"); var response = await client.PostAsync(actionUrl, formData); if (!response.IsSuccessStatusCode) { return null; } return await response.Content.ReadAsStreamAsync(); } } }</code>
Das obige ist der detaillierte Inhalt vonWie führe ich HTTP-POST-Datei-Uploads in C# durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!