首页 > 网络编程 >ASP.NETCore中实现高效的文件上传的示例代码

ASP.NETCore中实现高效的文件上传的示例代码

来源:互联网 2026-04-08 19:29:31

ASP.NET Core文件上传功能实现指南 在现代Web开发中,文件上传是一项常见需求。借助ASP.NET Core框架,开发者可以相对轻松地实现这一功能,并获得灵活的配置选项。本文将逐步介绍如何在ASP.NET Core中实现文件上传,涵盖从基础操作到文件大小限制与类型校验等实用技巧。 1. 创

ASP.NET Core文件上传功能实现指南

在现代Web开发中,文件上传是一项常见需求。借助ASP.NET Core框架,开发者可以相对轻松地实现这一功能,并获得灵活的配置选项。本文将逐步介绍如何在ASP.NET Core中实现文件上传,涵盖从基础操作到文件大小限制与类型校验等实用技巧。

1. 创建ASP.NET Core项目

首先,请确保本地已安装.NET SDK。若未安装,可前往微软官方文档下载并安装。

随后,通过命令行创建新项目:

dotnet new webapi -n FileUploadExample
cd FileUploadExample

执行上述命令后,将生成一个Web API项目结构,后续文件上传功能将在此项目中实现。

2. 配置文件上传

2.1 配置Program.cs

注意:在ASP.NET Core 3.0及以上版本中,项目配置主要位于Program.cs文件,而非Startup.cs

打开Program.cs文件,添加以下配置以设置文件上传大小限制:

var builder = WebApplication.CreateBuilder(args);

// 配置文件上传大小限制
builder.Services.Configure(options =>
{
    options.MultipartBodyLengthLimit = 10 * 1024 * 1024; // 设置文件上传大小限制为 10MB
});

var app = builder.Build();

// 配置 HTTP 请求管道
app.UseHttpsRedirection();
app.MapControllers();
app.Run();

2.2 创建文件上传控制器

Controllers目录下新建FileUploadController.cs控制器,用于处理文件上传逻辑。

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System.IO;
using System.Threading.Tasks;

namespace FileUploadExample.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class FileUploadController : ControllerBase
    {
        // 上传文件的 API
        [HttpPost("upload")]
        public async Task UploadFile(IFormFile file)
        {
            if (file == null || file.Length == 0)
            {
                return BadRequest("未选择文件");
            }

            // 限制文件类型(例如只允许上传 .jpg 和 .png 文件)
            var allowedExtensions = new[] { ".jpg", ".jpeg", ".png" };
            var extension = Path.GetExtension(file.FileName).ToLowerInvariant();
            if (!allowedExtensions.Contains(extension))
            {
                return BadRequest("只允许上传 JPG 和 PNG 格式的文件");
            }

            // 限制文件大小(例如文件大小不能超过 5MB)
            if (file.Length > 5 * 1024 * 1024)
            {
                return BadRequest("文件大小不能超过 5MB");
            }

            // 保存文件到服务器指定路径
            var filePath = Path.Combine(Directory.GetCurrentDirectory(), "UploadedFiles", file.FileName);
            // 确保目标目录存在
            Directory.CreateDirectory(Path.GetDirectoryName(filePath));

            // 保存文件
            using (var stream = new FileStream(filePath, FileMode.Create))
            {
                await file.CopyToAsync(stream);
            }

            return Ok(new { FilePath = filePath });
        }
    }
}

代码说明:

  • 文件大小限制:通过检查file.Length判断文件是否超出设定限额(此处为5MB)。
  • 文件类型验证:根据文件扩展名校验类型,仅允许.jpg.jpeg.png格式的图片。
  • 保存文件:将文件存储至服务器本地的UploadedFiles文件夹,路径可按需调整。
  • 返回响应:上传成功后返回文件存储路径。

2.3 测试上传接口

在命令行中运行项目:

dotnet run

启动项目后,使用Postman等API测试工具,向以下地址发送POST请求:

http://localhost:5000/api/fileupload/upload

在请求中附加file参数并选择文件。成功上传后将收到包含文件路径的响应,例如:

{
    "filePath": "D:\\netcore\\example.jpg"
}

3. 实现多文件上传

实际应用中常需支持多文件上传。ASP.NET Core同样提供了简洁的多文件上传支持。

3.1 修改控制器支持多文件上传

[HttpPost("upload-multiple")]
public async Task UploadMultipleFiles(IFormFile[] files)
{
    if (files == null || files.Length == 0)
    {
        return BadRequest("未选择任何文件");
    }

    foreach (var file in files)
    {
        // 限制文件类型
        var allowedExtensions = new[] { ".jpg", ".jpeg", ".png" };
        var extension = Path.GetExtension(file.FileName).ToLowerInvariant();
        if (!allowedExtensions.Contains(extension))
        {
            return BadRequest("只允许上传 JPG 和 PNG 格式的文件");
        }

        // 限制文件大小
        if (file.Length > 5 * 1024 * 1024)
        {
            return BadRequest("文件大小不能超过 5MB");
        }

        // 保存文件
        var filePath = Path.Combine(Directory.GetCurrentDirectory(), "UploadedFiles", file.FileName);
        Directory.CreateDirectory(Path.GetDirectoryName(filePath));
        using (var stream = new FileStream(filePath, FileMode.Create))
        {
            await file.CopyToAsync(stream);
        }
    }

    return Ok(new { Message = "文件上传成功" });
}

代码说明:

  • 多文件上传:通过IFormFile[] files接收多个文件。
  • 每个文件均会经历相同的类型验证和大小限制检查。
  • 所有文件均保存至UploadedFiles文件夹。

4. 前端上传界面实现

以下为简单的HTML表单示例,允许用户选择并上传多个文件:




    
    
    文件上传


    

上传文件

代码说明:

  • FormData对象:用于便捷地构建包含文件的表单数据并发送至服务器。
  • 使用fetch API将文件数据发送至upload-multiple接口。

5. 总结

在ASP.NET Core中实现文件上传功能流程清晰,无论是单文件还是多文件场景。关键在于正确配置请求限制,并在控制器中严格校验文件类型与大小。掌握这些要点后,即可构建稳定可靠的文件上传功能。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。