首页 >后端开发 >C++ >如何在 ASP.NET Web API 中正确接受文件 POST 请求?

如何在 ASP.NET Web API 中正确接受文件 POST 请求?

Patricia Arquette
Patricia Arquette原创
2025-01-24 01:12:09754浏览

How to Properly Accept File POST Requests in ASP.NET Web API?

在 ASP.NET Web API 中处理文件上传

本指南演示如何在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn