【问题标题】:IFormFile 'System.InvalidOperationException'IFormFile 'System.InvalidOperationException'
【发布时间】:2019-03-27 22:12:02
【问题描述】:

我的 ASP.NET Core 应用程序中 IFormFile 中的 non-public.member _baseStream 属性在上传文件后引发以下异常:

ReadTimeout =   ((Microsoft.AspNetCore.Http.Internal.FormFile)BildUpload)._baseStream.ReadTimeout' threw an exception of type 'System.InvalidOperationException'

我正在尝试使用带有以下代码的剃须刀页面上传文件:

<form method="post" enctype="multipart/form-data">
    <div class="form-group">
        <input type="file" name="BildUpload"  />
    </div>
    <input type="submit" value="Upload" class="btn btn-default" />
</form>

在代码隐藏类中,我只得到了声明,除了剃须刀页面外,没有其他任何东西可以读取或写入参数:

    public IFormFile BildUpload { get; set; }

感谢您的帮助!

我的最终目标是将文件解析为字节数组,然后将 sava 解析为这样的数据库:How to Convert a file into byte array directly without its path(Without saving file) 但是在那里我得到了一个空指针异常。

【问题讨论】:

  • 这听起来像是一个 XY 问题。为什么这个例外会成为问题?为什么要尝试在已读取的 HTTP 请求正文上获取读取超时?
  • 我的目标是将文件解析为字节数组并将其保存到数据库中。由于这个例外,我不能这样做。通过解析,我得到一个空指针异常。我正在尝试实现这一点:stackoverflow.com/questions/36432028/…
  • 显示导致此异常的代码。在那个问题中没有任何人使用ReadTimeout。另见docs.microsoft.com/en-us/aspnet/core/mvc/models/…
  • 上面@CodeCaster 评论中发布的官方文档链接有非常好的代码示例,可以帮助您入门。

标签: asp.net-core entity-framework-core razor-pages iformfile


【解决方案1】:

您可以阅读有关文件上传的信息here,以确保您没有错过任何步骤,以防您需要更多有关文件上传的知识。

【讨论】:

    【解决方案2】:

    如果有人面临类似的行为。这是我上传图像并将其转换为字节数组(用于将其存储在 Microsoft SQL 数据库中)的解决方案:

    首先使用问题中的 xaml 代码和 IFormFile 属性。 在后面的代码中添加此代码以将表单数据处理为字节数组:

    public async Task<IActionResult> OnPostAsync(string id)
    {
        //get the "Kontakt" entity
        if (!await SetKontaktAsync(id))
        {
              return NotFound();
        }
    
        //convert form data to byte array and assign it to the entity
        if (BildUpload.Length > 0)
        {
              using (var ms = new MemoryStream())
              {
                    BildUpload.CopyTo(ms);
                    Kontakt.Bild = ms.ToArray();
              }
        }
    
        //save changes to the database
        _context.Attach(Kontakt).State = EntityState.Modified;
        await _context.SaveChangesAsync();
    
        //reload page
        return await OnGetAsync(Kontakt.GID);
    }
    

    框架:ASP.NET Core 2.2、Entity Framework Core 2.2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-02
      • 2012-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多