本指南演示如何在 ASP.NET Web API 中正确接收 POSTed 文件,例如图像。 下面的示例避免将文件直接保存到服务器的文件系统,而是将文件数据保留在内存中。
改进的文件上传方法:
以下代码片段利用 MultipartMemoryStreamProvider
在 Web API 中高效处理文件上传。
<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>
此方法检查多部分内容、提取文件名、验证文件类型、将文件数据读入字节数组,然后允许对 buffer
(文件的二进制数据)进行自定义处理。 通过返回适当的 HTTP 状态代码改进了错误处理。 请记住为生产环境添加必要的错误处理和安全措施。
以上是如何在 ASP.NET Web API 中正确接受文件 POST 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!