Téléchargement de fichiers HTTP POST en C#
L'envoi de fichiers via HTTP POST est une tâche courante dans les applications Web. En C#, vous pouvez utiliser des HttpWebRequest
classes et des MultipartFormDataContent
objets pour réaliser cette fonctionnalité.
Créer un objet HttpWebRequest
Tout d'abord, créez un objet HttpWebRequest
et spécifiez l'URI du serveur Web. Ensuite, définissez l'attribut Method
sur "POST" et l'attribut ContentType
sur le type de contenu approprié du fichier envoyé.
<code class="language-csharp">HttpWebRequest req = WebRequest.Create(uri) as HttpWebRequest; req.Method = "POST"; req.ContentType = file.ContentType;</code>
Fichier prêt à être téléchargé
Pour envoyer un fichier, créez un objet MultipartFormDataContent
et incluez-le dans la requête. MultipartFormDataContent
Vous permet d'envoyer à la fois des données de formulaire et des données binaires en une seule requête.
<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>
Envoyer la demande
Enfin, utilisez GetResponse()
ou GetResponseAsync()
pour envoyer la requête au serveur Web.
<code class="language-csharp">HttpWebResponse response = null; try { response = req.GetResponse() as HttpWebResponse; } catch (Exception e) { // 处理异常 }</code>
Alternatives pour .NET 4.0 et versions antérieures
Pour .NET 4.0 et versions antérieures, vous pouvez utiliser le package Microsoft.Net.Http
de NuGet pour simplifier le processus de téléchargement de fichiers :
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!