Maison > développement back-end > C++ > Comment extraire des octets de fichiers à partir de POST Multipart/Form-Data dans les services REST WCF ?

Comment extraire des octets de fichiers à partir de POST Multipart/Form-Data dans les services REST WCF ?

Susan Sarandon
Libérer: 2025-01-05 08:15:40
original
624 Les gens l'ont consulté

How to Extract File Bytes from Multipart/Form-Data POSTs in WCF REST Services?

Extraction d'octets de fichier à partir de POST Multipart/Form-Data dans les services WCF REST

Les formulaires Web utilisent souvent le type de contenu multipart/form-data pour publier des fichiers sur des services Web. Bien que cela facilite les transferts de fichiers, extraire les octets du fichier du corps en plusieurs parties peut être un défi. Une solution à ce problème consiste à exploiter l'API Microsoft publique introduite dans .NET 4.5.

Pour utiliser cette API, vous devrez inclure System.Net.Http.dll et System.Net.Http.Formatting. dll dans votre projet. Si vous utilisez .NET 4, vous pouvez obtenir ces assemblys via NuGet.

Une fois les assemblys en place, vous pouvez utiliser le code suivant pour analyser le corps en plusieurs parties et extraire les octets du fichier :

public static async Task ParseFiles(
    Stream data,
    string contentType,
    Action<string, Stream> fileProcessor)
{
    // Create a stream content based on the input stream
    var streamContent = new StreamContent(data);

    // Set the content type header
    streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse(contentType);

    // Read the multipart data as multipart content
    var provider = await streamContent.ReadAsMultipartAsync();

    // Loop through each content retrieved from the multipart body
    foreach (var httpContent in provider.Contents)
    {
        // Get the file name
        var fileName = httpContent.Headers.ContentDisposition.FileName;

        // If there is a file name, ignore empty file names
        if (string.IsNullOrWhiteSpace(fileName))
        {
            continue;
        }

        // Read the file content stream
        using (Stream fileContents = await httpContent.ReadAsStreamAsync())
        {
            // Pass the file name and file content stream to the specified processor
            fileProcessor(fileName, fileContents);
        }
    }
}
````

To use this code, you can create a custom file processor method, such as:
Copier après la connexion

private void MyProcessMethod(nom de chaîne, Stream contenu)
{

// Your code to process the file data
Copier après la connexion

}

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal