Maison > développement back-end > C++ > Comment extraire des octets de fichier d'un flux POST Multipart/Form-Data dans WCF REST ?

Comment extraire des octets de fichier d'un flux POST Multipart/Form-Data dans WCF REST ?

Barbara Streisand
Libérer: 2025-01-01 02:45:15
original
530 Les gens l'ont consulté

How to Extract File Bytes from a Multipart/Form-Data POST Stream in WCF REST?

Comment extraire des octets de fichier d'un flux POST multiparties/données de formulaire dans WCF REST

Lorsque vous POSTez un fichier sur un WCF REST service via une requête multipart/form-data, le flux résultant contient une séquence de limites, d'en-têtes et d'octets de fichier. Extraire les octets du fichier de ce flux peut être difficile.

Solution : Utilisation de l'API publique Microsoft

Microsoft fournit un ensemble d'API publiques qui simplifient ce processus :

  • 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 et .NET 4)

Implémentation :

Cet extrait de code montre comment extraire les octets d'un fichier à l'aide de ceux-ci API :

using System.Net.Http;
using System.Net.Http.Formatting;
using System.Threading.Tasks;

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

Exemple d'utilisation :

Si vous disposez d'une méthode WCF REST, vous pouvez l'implémenter en tant que telle :

[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

Traitement des fichiers :

Dans MyProcessMethod, vous pouvez spécifier les actions à effectuer avec les octets du fichier extrait, par exemple en les écrivant 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!

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