SuperAPI AI 工具集

file-handling

通用与其它

查看项目

更新于 10-16 01:27

技能介绍

用途:为 ASP.NET Core Razor Pages 应用提供文件上传、流式处理、存储抽象与安全文件处理的实现模式,解决文件处理中的安全与可扩展性问题(如路径遍历、恶意上传、内存耗尽、存储低效)。

主要能力(资料给出的四类模式):

  1. 安全文件上传校验:通过 FileUploadValidator 校验文件是否存在与大小(默认上限可通过配置 FileUpload:MaxSize 调整,示例为 10MB)、扩展名白名单(FileUpload:AllowedExtensions,示例含 .jpg/.jpeg/.png/.pdf/.doc/.docx),并用魔数(magic number)比对文件头以验证内容与声明类型一致,返回 ValidationResult。
  2. 流式处理大文件:使用 MultipartReader 逐段读取请求体,配合 RequestSizeLimit 与 RequestFormLimits 调整限制(示例 500MB),用 Path.GetFileName 防止路径遍历,直接流式上传到存储而不整文件载入内存,并记录日志。
  3. 存储抽象:定义 IFileStorageService 接口(UploadAsync、UploadStreamAsync、DownloadAsync、DeleteAsync、GetMetadataAsync、ExistsAsync)与 FileMetadata 记录,提供本地文件系统实现(LocalFileStorageService,基路径取 Storage:LocalPath,默认 uploads)和 Azure Blob 实现(AzureBlobStorageService,连接字符串 AzureStorage,容器名取 Storage:ContainerName,默认 uploads)。
  4. 安全下载:在下载页中先校验文件 ID 格式(Guid.TryParseExact),再获取元数据后返回文件(资料在此处截断,未提供完整下载实现细节)。

使用方式:上述代码为示例模式,需在项目中自行引入相应命名空间与依赖(如配置、日志、Azure Blob SDK),并按配置节提供参数。资料未提供安装命令、NuGet 包名或完整项目配置。

适用场景:ASP.NET Core Razor Pages 中需要处理文件上传下载、希望兼顾安全校验、大文件低内存占用与多后端存储切换的应用。

限制:资料仅给出代码片段与模式,未说明完整部署步骤、依赖版本、收费或平台要求;下载模式代码在示例中被截断,授权与内容处置的完整实现暂未提供。