Panduan ini menunjukkan cara menerima fail POST dengan betul, seperti imej, dalam API Web ASP.NET. Contoh di bawah mengelak daripada menyimpan fail terus ke sistem fail pelayan, sebaliknya menyimpan data fail dalam ingatan.
Kaedah Muat Naik Fail yang Diperbaiki:
Coretan kod berikut menggunakan MultipartMemoryStreamProvider
untuk mengendalikan muat naik fail dengan cekap dalam 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>
Kaedah ini menyemak kandungan berbilang bahagian, mengekstrak nama fail, mengesahkan jenis fail, membaca data fail ke dalam tatasusunan bait, dan kemudian membenarkan pemprosesan tersuai buffer
(data binari fail). Pengendalian ralat dipertingkatkan dengan mengembalikan kod status HTTP yang sesuai. Ingat untuk menambah pengendalian ralat dan langkah keselamatan yang diperlukan untuk persekitaran pengeluaran.
Atas ialah kandungan terperinci Bagaimana untuk Menerima Permintaan POST Fail dengan Benar dalam API Web ASP.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!