You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor WebAssembly中使用MemoryStream时如何包含文件名及扩展名

Blazor WebAssembly 传递MemoryStream时附带文件名及扩展名的解决方案

要在传递MemoryStream的同时把文件名和扩展名传给API端点,最直接的方式是使用MultipartFormDataContent包装文件流和文件名,API端可直接解析出完整文件信息。

修改前端提交代码

更新OnSubmit方法,将文件流与文件名封装到表单数据中:

private async Task OnSubmit()
{
    try
    {
        if (selectedFile != null)
        {
            using (var memoryStream = new MemoryStream())
            {
                await selectedFile.Stream.CopyToAsync(memoryStream);
                memoryStream.Position = 0;

                // 创建表单数据容器
                var formContent = new MultipartFormDataContent();
                // 包装文件流并指定完整文件名(含扩展名)
                var fileContent = new StreamContent(memoryStream);
                formContent.Add(fileContent, "uploadedFile", selectedFile.Name);

                // 调用API端点,替换为你的实际接口地址
                var response = await httpClient.PostAsync("/api/files/upload", formContent);
                response.EnsureSuccessStatusCode();
            }
        }
        else
        {
            Console.WriteLine("未选择文件");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
}

API端点接收代码

后端API控制器通过IFormFile接收文件,自动获取文件名及扩展名:

[ApiController]
[Route("api/files")]
public class FilesController : ControllerBase
{
    [HttpPost("upload")]
    public async Task<IActionResult> UploadFile(IFormFile uploadedFile)
    {
        if (uploadedFile == null || uploadedFile.Length == 0)
        {
            return BadRequest("无效文件");
        }

        // 获取完整文件名(含扩展名)
        string fullFileName = uploadedFile.FileName;
        // 示例:将文件保存到本地
        var savePath = Path.Combine("uploads", fullFileName);
        using (var stream = new FileStream(savePath, FileMode.Create))
        {
            await uploadedFile.CopyToAsync(stream);
        }

        return Ok(new { Message = "上传成功", FileName = fullFileName });
    }
}

关键说明

  • selectedFile.Name本身已包含文件名和扩展名,直接传递即可。
  • MultipartFormDataContent是HTTP文件上传的标准方式,兼容性强,API端解析简单。
  • 若需传递额外参数,可在MultipartFormDataContent中添加StringContent类型的项。

内容的提问来源于stack exchange,提问作者Josh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:39:58