基于 ASP.NET WebAPI 构建轻量级文件服务
很多系统在设计初期,往往纠结于是否要引入 MinIO 或 OSS 等对象存储方案。对于大部分内部管理系统而言,复杂的分布式架构可能显得过于沉重。本文将分享如何基于 ASP.NET WebAPI(.NET Framework 4.5)实现一个简单、可控的文件服务。
设计思路
在动手写代码前,我们先明确几个核心原则:
- 存储位置:所有文件统一放在网站根目录下的
Uploads文件夹中。虽然考虑过挂载其他磁盘,但为了通过 URL 直接预览文件,放在网站目录下最为方便。 - 命名规范:采用'文件 ID.扩展名'的格式。访问时通过文件 ID 查找,避免文件名冲突和中文乱码问题。
- 接口设计:主要包含三个核心接口——上传、获取路径、删除。
- 封装调用:将文件服务的 HTTP 请求封装为工具类,降低业务层耦合度。
注意:单个文件限制最大 100MB,具体阈值可根据项目需求调整。同时需关注 WebApi 项目本身的报文大小限制配置。
核心代码实现
1. 基础控制器与配置
为了方便统一返回格式,我们定义一个 BaseController,并允许在配置文件中指定支持的扩展名。
Web.config 配置
<appSettings>
<add key="AllowedExtensions" value="jpg,jpeg,png,gif,pdf,txt,doc,docx,xls,xlsx,zip,rar"/>
</appSettings>
BaseController 基类
public abstract class BaseController : ApiController
{
protected IHttpActionResult Success(string message = "", object data = null)
{
return Json(new { Code = 0, Message = message, Data = data });
}
protected IHttpActionResult Fail()
{
Json( { Code = , Message = message, Data = data });
}
}

