将文件上传器绑定到Blazor中的模型

时间:2019-07-26 10:59:42

标签: c# blazor

Blazor中的绑定文件上载器不能与razor组件中的@bind属性一起使用

我已经使用两种方式绑定参数在表单为Submit时构建了模型,并且该模型适用于标准组件,文件上传器除外,

我不知道绑定文件上传器的参数类型是什么

这是我的“提交”功能

 protected async Task OnSubmit()
        {
...
            error = null;
            try
            {
          ...
//nikImagewas my intention to 'hold' the file image. its type is IFormFile
                customer.NIKImage = nikImage;
                var response = await _state.PostAsync(WebsVariables.Urls.CreateCustomerDraftObject, customer);
                if (response.IsSuccessStatusCode)
                {
                  ...
                }
                else
                {
                    var msg = await response.Content.ReadAsStringAsync();
                    _toastService.ShowError(msg);
                }
                //clear();

                this.StateHasChanged();
            }
            catch (Exception ex)
            {
                error = ex.Message;
            }
        }

当我尝试时,nikImage为null 我希望我可以在将文件发布到Web API之前对其进行操作

2 个答案:

答案 0 :(得分:0)

您的代码含糊,无法真正解密。但是,我认为您不能在客户端Blazor上使用IFromFile。您可以在服务器端Blazor中使用IFormFile。

  

如果您想从<input type=file>获取数据,则必须   通过类似的方式获取二进制数据   Getting byte array through input type = file   使用JS互操作

样品

https://github.com/aspnet/AspNetCore/issues/10552 https://remibou.github.io/Upload-file-with-Blazor/

希望这对您有帮助...

答案 1 :(得分:0)

信息提示

我已经找到该链接了,看来我做错了 由于我找不到有关上传的任何最新工作示例,因此我正在使用syncfusion上传器文件,但由于默认的signalR消息大小为32KB,因此需要进行一些调整,因此它可以上传较大的文件(需要3天的时间来查找这些文件)

services.AddSignalR(e =>
{
    e.MaximumReceiveMessageSize = 5000000;
});

这些https://github.com/aspnet/AspNetCore/issues/11643

的答案