Maison > développement back-end > C++ > Comment puis-je extraire des octets de fichier à partir d'une requête POST Multipart/Form-Data dans .NET ?

Comment puis-je extraire des octets de fichier à partir d'une requête POST Multipart/Form-Data dans .NET ?

DDD
Libérer: 2025-01-04 14:24:38
original
782 Les gens l'ont consulté

How Can I Extract File Bytes from a Multipart/Form-Data POST Request in .NET?

Extraction d'octets de fichier à partir d'un POST multipart/form-data

Dans un POST multipart/form-data, les données du fichier sont intégrées dans le flux de requêtes. Cela présente un défi pour l'extraction des octets du fichier côté serveur. Une solution consiste à utiliser les API publiques de Microsoft pour analyser le contenu en plusieurs parties.

Mise en œuvre

Pour analyser les données en plusieurs parties à l'aide de l'API de Microsoft, vous aurez besoin du System.Net.Http .dll et System.Net.Http.Formatting.dll. Pour .NET 4.5, ces assemblys sont inclus. Pour .NET 4, téléchargez-les via NuGet.

Avec les assemblys référencés, vous pouvez implémenter la logique d'analyse :

public static async Task ParseFiles(
    Stream data, string contentType, Action<string, Stream> fileProcessor)
{
    var streamContent = new StreamContent(data);
    streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(contentType);

    var provider = await streamContent.ReadAsMultipartAsync();

    foreach (var httpContent in provider.Contents)
    {
        var fileName = httpContent.Headers.ContentDisposition.FileName;
        if (string.IsNullOrWhiteSpace(fileName))
        {
            continue;
        }

        using (Stream fileContents = await httpContent.ReadAsStreamAsync())
        {
            fileProcessor(fileName, fileContents);
        }
    }
}
Copier après la connexion

Pour utiliser ce code, vous pouvez implémenter une méthode WCF REST comme ce qui suit :

[OperationContract]
[WebInvoke(Method = WebRequestMethods.Http.Post, UriTemplate = "/Upload")]
void Upload(Stream data)
{
    MultipartParser.ParseFiles(
           data, 
           WebOperationContext.Current.IncomingRequest.ContentType, 
           MyProcessMethod);
}
Copier après la connexion

En utilisant les API de Microsoft, vous pouvez extraire efficacement les octets du fichier de multipart/form-data Requêtes POST, vous permettant d'écrire les fichiers sur le disque.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal