Maison >développement back-end >C++ >Comment extraire efficacement les octets de fichier d'un flux de requête POST multipart/form-data ?
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 :
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!