Maison >développement back-end >C++ >Comment effectuer des téléchargements de fichiers HTTP POST en C# ?

Comment effectuer des téléchargements de fichiers HTTP POST en C# ?

DDD
DDDoriginal
2025-01-11 19:32:44612parcourir

How to Perform HTTP POST File Uploads in C#?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn