如何在ASP.NET Core中实现文件上传和下载功能

魔法少女酱 2024-06-07 ⋅ 38 阅读

在Web应用程序开发中,文件上传和下载是非常常见的功能之一。ASP.NET Core是一个功能强大的开发框架,提供了很多方便的特性来实现文件操作。本篇博客将演示如何在ASP.NET Core中实现文件上传和下载功能。

文件上传

首先,我们需要创建一个视图来实现文件上传功能。在视图中,我们可以使用HTML的<input type="file">元素来选择上传的文件。

<form method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" value="Upload" />
</form>

接下来,我们需要在后台代码中处理文件上传。在ASP.NET Core中,可以使用IFormFile接口来访问上传的文件内容。

[HttpPost]
public async Task<IActionResult> Upload(IFormFile file)
{
    if (file != null && file.Length > 0)
    {
        var filePath = Path.Combine(Directory.GetCurrentDirectory(), "uploads", file.FileName);

        using (var stream = new FileStream(filePath, FileMode.Create))
        {
            await file.CopyToAsync(stream);
        }
    }

    return RedirectToAction("Index");
}

在上面的代码中,我们使用Path.Combine方法将上传的文件保存到指定目录。FileStream用于读写文件流,CopyToAsync方法将上传的文件内容复制到目标路径。最后,将用户重定向到另一个视图。

文件下载

与文件上传相比,文件下载要简单得多。首先,在视图中,我们需要添加按钮或链接,用户点击该按钮或链接将触发文件下载。

<a href="@Url.Action("Download", new { filename = "example.txt" })">Download File</a>

上面的代码中,我们使用@Url.Action来生成一个可以下载指定文件的链接。

接下来,我们需要在后台代码中处理文件下载请求。在ASP.NET Core中,可以使用FileStreamResult类来生成文件下载响应。

public IActionResult Download(string filename)
{
    var filePath = Path.Combine(Directory.GetCurrentDirectory(), "uploads", filename);
    var fileStream = new FileStream(filePath, FileMode.Open);

    return File(fileStream, "application/octet-stream", filename);
}

在上面的代码中,我们使用FileStream打开文件流,并通过File方法生成一个FileStreamResult对象,该对象将作为文件下载响应返回给客户端。

总结

通过本篇博客,我们学习了在ASP.NET Core中实现文件上传和下载功能的方法。文件上传要求设置正确的enctype属性并使用IFormFile接口访问文件内容。文件下载要求使用FileStreamResult类生成文件下载响应。希望这篇博客对你有所帮助!


全部评论: 0

    我有话说: