为了账号安全,请及时绑定邮箱和手机立即绑定

使用 .NET Core 2.2 上传图像

使用 .NET Core 2.2 上传图像

C#
回首忆惘然 2022-06-18 17:20:16
我有一个显示成员当前数据的表单,包括他的照片。在他的照片下方,他可以选择上传另一张照片,然后我用控制器中的新照片替换旧照片。我的问题是我无法恢复模型中的图像,它始终为空(其余的都很完美)。在我的模型中,我声明了一个Member_UploadPicture类型为 的变量IFormFile。我遵循了最近的 Microsoft 教程(https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads?view=aspnetcore-2.2),但没有任何效果,仍然为 null 。我尝试使用@Html.Editor带有变量名称的 an 以及 an<input type = file>但 2 始终为空。你有想法吗?模型public class MemberViewModel{    public string Member_NameFirst { get; set; }    public string Member_NameLast { get; set; }    public byte[] Member_Picture { get; set; }    public IFormFile Member_UploadPicture { get; set; }    public string Member_Picture_Show { get; set; }    // other properties...}控制器[Authorize(Roles = "Member, Admin")][HttpPost]public async Task<IActionResult> GetMember(MemberViewModel model){    if (ModelState.IsValid)    {        var MembertoUpdate = new MemberViewModel        {          //code        };        using (var memomyStream = new MemoryStream())        {            await model.Member_UploadPicture.CopyToAsync(memomyStream);            MembertoUpdate.Member_Picture = memomyStream.ToArray();        }        return Ok(model);    }    else return BadRequest();}看法    @using (Html.BeginForm(null, null, FormMethod.Post, new { id = "formAll", style = "margin-top:3%", enctype = "multipart/form-data" }))    {        <div class="panel panel-primary">            <div class="panel-heading">                <h3 class="panel-title">Personnal</h3>            </div>            <div class="panel-body">                <div id="formMember" class="row col-xs-12">                    @Html.ValidationSummary(true, "", new { @class = "text-danger" })                    <div class="col-xs-6">                        <div class="form-check-inline col-xs-12" style="margin-top:2%">                        </div>                    </div>                </div>            </div>        </div>}
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

因为var formData = $("#formAll").serialize();,它不能序列化IFormFile,你需要追加IFormFile到formData.


<script type="text/javascript">

    $(document).ready(function () {

        $("#formAll").submit(function (event) {

            event.preventDefault();


            var formData = new FormData();

            formData.append('Member_NameFirst', $('#Member_NameFirst').val());

            formData.append('Member_UploadPicture', $('#Member_UploadPicture')[0].files[0]);

        $.ajax({

                url: "https://localhost:44307/home/getmember",

                type: 'POST',

                data: formData,

                dataType: 'json',

                processData: false,

                contentType: false,

                success: function (data) {

                    //code

                },

                error: function (error) {

                    //code

                }

            });

        })        })

</script>


查看完整回答
反对 回复 2022-06-18
?
守候你守候我

TA贡献1802条经验 获得超10个赞

消除


@Html.EditorFor(model => model.Member_UploadPicture, new { htmlAttributes = new { @class = "form-control-file", @id = "Member_UploadPicture" } })

添加到你的ajax请求


processData: false,

contentType: false,


查看完整回答
反对 回复 2022-06-18
  • 2 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信