📜  .net core 3.1 中的 httppostedfilebase - C# (1)

📅  最后修改于: 2023-12-03 15:29:07.676000             🧑  作者: Mango

使用 HttpPostedFileBase 在 .NET Core 3.1 中处理文件上传

在开发 Web 应用程序时,经常需要实现文件上传的功能。在 .NET Core 3.1 中,我们可以使用 HttpPostedFileBase 类来处理文件上传。本文将介绍如何使用 HttpPostedFileBase 在 .NET Core 3.1 中处理文件上传。

HttpPostedFileBase 简介

HttpPostedFileBase 是 ASP.NET MVC 中的一个重要类,用于处理通过 HTTP POST 请求上传的文件。在 .NET Core 3.1 中,也可以使用它来处理文件上传。

HttpPostedFileBase 类有以下属性和方法:

  • FileName:获取客户端文件的原始名称。
  • ContentLength:获取上传文件的字节大小。
  • ContentType:获取客户端文件的 MIME 内容类型。
  • InputStream:获取一个可用于读取上传文件内容的 Stream 对象。
  • SaveAs(string filename):将上传的文件保存到指定的路径。
实现文件上传

下面我们将以一个 ASP.NET Core MVC 应用程序为例,演示如何使用 HttpPostedFileBase 在 .NET Core 3.1 中实现文件上传。

首先,我们需要在 MVC 控制器中添加一个 HttpPost 方法,接受从客户端上传的文件。这个方法需要一个参数,类型是 HttpPostedFileBase,表示上传的文件。代码如下:

[HttpPost]
public async Task<IActionResult> Upload(HttpPostedFileBase file)
{
    // TODO: 处理上传的文件
    return View();
}

接下来,在视图中添加一个表单,允许用户上传文件。代码如下:

<form asp-controller="Home" asp-action="Upload" method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label>选择文件:</label>
        <input type="file" name="file" />
    </div>
    <button type="submit" class="btn btn-primary">上传文件</button>
</form>

在表单中,我们使用 enctype="multipart/form-data" 来指定这个表单是用于上传文件的。

最后,在上传方法中,我们可以调用 HttpPostedFileBase 类的属性和方法,来处理上传的文件。例如,可以使用 SaveAs 方法将文件保存到本地磁盘。代码如下:

[HttpPost]
public async Task<IActionResult> Upload(HttpPostedFileBase file)
{
    if (file != null && file.ContentLength > 0)
    {
        var fileName = Path.GetFileName(file.FileName);
        var filePath = Path.Combine(_hostingEnvironment.ContentRootPath, "uploads", fileName);
        using (var stream = new FileStream(filePath, FileMode.Create))
        {
            await file.CopyToAsync(stream);
        }
    }

    return View();
}

在上面的代码中,我们检查上传的文件是否为空,并且大小是否大于 0。如果文件有效,我们将文件保存到本地磁盘。这里我们使用了 _hostingEnvironment.ContentRootPath 属性,获取应用程序的根目录,并在其中创建一个名为 uploads 的文件夹。

总结

使用 HttpPostedFileBase 在 .NET Core 3.1 中处理文件上传,是一项非常简单的任务。我们只需要在 MVC 控制器中添加一个 HttpPost 方法,并在视图中添加一个表单。然后,在上传方法中,我们可以方便地使用 HttpPostedFileBase 类的属性和方法,来处理上传的文件。