ASP.NET MVC 上传图片转Base64时模型应选用什么数据类型?
解决方案
1. 修正模型属性类型
上传文件无法使用string类型直接接收,ASP.NET Core 中对应表单上传文件的专用类型是 IFormFile,你需要先修改模型定义:
using Microsoft.AspNetCore.Http; public class TestModel { public IFormFile Image { get; set; } }
2. 修正视图表单配置
文件上传要求表单必须指定 enctype="multipart/form-data" 属性,否则后端无法正确获取到文件内容,可额外添加accept属性限制仅能选择图片文件:
@model Test.Models.TestModel <form asp-action="Test" method="post" enctype="multipart/form-data"> <div class="form-group"> <input asp-for="Image" class="form-control" type="file" accept="image/*" /> </div> <div class="form-group"> <input type="submit" value="Create" class="btn btn-primary" /> </div> </form>
3. 后端将IFormFile转换为Base64
在对应的Post接口中,读取IFormFile的流内容,再转换为Base64字符串即可,示例代码如下:
[HttpPost] public IActionResult Test(TestModel model) { string base64Image = string.Empty; if (model.Image != null && model.Image.Length > 0) { using (var memoryStream = new MemoryStream()) { model.Image.CopyTo(memoryStream); byte[] imageBytes = memoryStream.ToArray(); // 转换为纯Base64字符串 base64Image = Convert.ToBase64String(imageBytes); // 若需要可直接赋值给img标签src的格式,可拼接Data URI前缀 // base64Image = $"data:{model.Image.ContentType};base64,{base64Image}"; } } // 后续业务逻辑 return View(); }
内容的提问来源于stack exchange,提问作者user14282205
相关产品推荐
相关产品推荐

