Ce guide montre comment recevoir correctement des fichiers POST, tels que des images, dans l'API Web ASP.NET. L'exemple ci-dessous évite d'enregistrer les fichiers directement dans le système de fichiers du serveur, mais conserve les données du fichier en mémoire.
Méthode de téléchargement de fichiers améliorée :
L'extrait de code suivant utilise MultipartMemoryStreamProvider
pour gérer efficacement les téléchargements de fichiers au sein de l'API Web.
<code class="language-csharp">[HttpPost("api/upload")] public async Task<IHttpActionResult> Upload() { // Check if the request content is multipart if (!Request.Content.IsMimeMultipartContent()) { return BadRequest("Unsupported media type. Please use multipart/form-data."); } var provider = new MultipartMemoryStreamProvider(); await Request.Content.ReadAsMultipartAsync(provider); foreach (var fileContent in provider.Contents) { // Extract filename, removing surrounding quotes var filename = fileContent.Headers.ContentDisposition.FileName.Trim('"'); // Validate file type (example: only allow images) string[] allowedExtensions = { ".jpg", ".jpeg", ".gif", ".bmp", ".png" }; if (!allowedExtensions.Any(ext => filename.EndsWith(ext, StringComparison.OrdinalIgnoreCase))) { return BadRequest("Invalid file type."); } // Read file data into a byte array var buffer = await fileContent.ReadAsByteArrayAsync(); // Process the file data (e.g., save to database, image manipulation) // ... your file processing logic here ... } return Ok(); }</code>
Cette méthode vérifie le contenu en plusieurs parties, extrait les noms de fichiers, valide les types de fichiers, lit les données du fichier dans un tableau d'octets, puis permet un traitement personnalisé des buffer
(les données binaires du fichier). La gestion des erreurs est améliorée en renvoyant les codes d'état HTTP appropriés. N'oubliez pas d'ajouter la gestion des erreurs et les mesures de sécurité nécessaires pour les environnements de production.
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!