Maison >développement back-end >C++ >Comment extraire efficacement les octets de fichier d'un flux de requête POST multipart/form-data ?

Comment extraire efficacement les octets de fichier d'un flux de requête POST multipart/form-data ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-01 01:23:08173parcourir

How to Efficiently Extract File Bytes from a Multipart/Form-Data POST Request Stream?

POST multipart/données de formulaire et streaming d'entrée de fichier

Question :

Lors de la publication un fichier vers un service REST à l'aide de multipart/form-data, comment les octets du fichier peuvent-ils être efficacement extraits du flux de requêtes pour traitement ?

Réponse :

Pour extraire des octets de fichier à partir d'un flux de requête POST multipart/form-data, une approche complète utilisant les API publiques Microsoft est disponible.

Prérequis :

  • System.Net.Http.dll (inclus dans .NET 4.5 ou via NuGet pour .NET 4)
  • System.Net.Http.Formatting.dll (via NuGet pour .NET 4.5 ou .NET 4)

Code Implémentation :

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

    // Iterate through file parts
    foreach (var httpContent in provider.Contents)
    {
        var fileName = httpContent.Headers.ContentDisposition.FileName;
        if (string.IsNullOrWhiteSpace(fileName)) continue;

        using (Stream fileContents = await httpContent.ReadAsStreamAsync())
        {
            // Process file bytes
            fileProcessor(fileName, fileContents);
        }
    }
}

Exemple d'utilisation :

Pour une méthode WCF REST "OperationContract", vous pouvez implémenter le traitement de fichier :

public void Upload(Stream data)
{
    MultipartParser.ParseFiles(
           data, 
           WebOperationContext.Current.IncomingRequest.ContentType, 
           MyProcessMethod);
}

En utilisant cette approche, les développeurs peuvent facilement récupérer des octets de fichiers à partir de requêtes POST multipart/form-data pour un traitement ultérieur et stockage.

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