项目

文件管理模块 (专业版)

使用本模块需持有 ABP团队版或更高级别许可

该模块用于通过分层文件夹结构上传、下载和组织文件,兼容多租户架构,并可设置租户的总存储空间限制。

本模块基于 BLOB存储系统,可使用不同存储提供程序保存文件内容。

模块功能概览请参阅 模块介绍页面

安装指南

文件管理模块未预装在 启动模板 中,需手动安装。可通过以下两种方式安装模块:

1. 使用 ABP CLI

通过 add-module 命令可快速添加模块至解决方案,详情参考 CLI文档。安装文件管理模块的命令如下:

abp add-module Volo.FileManagement

2. 手动安装

若解决方案结构经过定制化修改,建议采用手动安装方式:

  1. 在对应项目中添加以下NuGet包引用(例如将 Volo.FileManagement.Application 添加到 {项目名}.Application.csproj):
<PackageReference Include="Volo.FileManagement.Application" Version="x.x.x" />
  1. 在项目模块类(如 {项目名}ApplicationModule)的 DependsOn 特性中添加依赖:
[DependsOn(
  //...
  typeof(FileManagementApplicationModule)
)]

若使用Blazor Web应用,需将 Volo.FileManagement.Blazor.WebAssembly 包添加到 {项目名}.Blazor.Client.csproj,并将 Volo.Chat.FileManagement.Blazor.Server 包添加到 {项目名}.Blazor.csproj

  1. 数据库配置:
    • EntityFrameworkCore 项目:在 DbContextOnModelCreating 方法中添加配置
    • MongoDB 项目:在 DbContextCreateModel 方法中添加配置
builder.ConfigureFileManagement();

使用EntityFrameworkCore时,请记得创建并执行数据库迁移

  1. 前端依赖:在 package.json 中添加npm包
"dependencies": {
    ...
    "@volo/file-management": "^2.9.0"
  }

添加包后需在 Web 项目目录执行 abp install-libs 命令

Angular UI

用户界面包含在 @volo/abp.ng.file-management 库的 FileManagementModule 模块中。请参考 功能库文档 了解在Angular应用中的安装配置方法。

Blazor & Blazor Server

ASP NET Core存在已知问题,需将 HubOptionsDisableImplicitFromServicesParameters 设为 true

Configure<HubOptions>(options =>
{
    options.DisableImplicitFromServicesParameters = true;
});

配置BLOB存储提供程序

文件管理模块基于 BLOB存储系统,使用 FileManagementContainer 作为BLOB容器。需为其配置存储提供程序:

Configure<AbpBlobStoringOptions>(options =>
{
    options.Containers.Configure<FileManagementContainer>(c =>
    {
        c.UseDatabase(); // 也可使用FileSystem或Azure等提供程序
    });
});

有关存储提供程序的详细用法,请参阅 BLOB存储提供程序文档

模块包

本模块遵循 模块开发最佳实践指南,由多个NuGet和NPM包组成。可通过 文件管理模块包列表页面 查看相关包列表。

用户界面

菜单项

文件管理模块在"主菜单"的"管理"项下添加:

  • 文件管理:查看文件夹结构和文件列表

菜单项名称常量定义于 FileManagementMenuNames 类。

页面功能

文件管理页面

用于创建文件夹、上传文件及查看存储的文件列表。

文件管理首页

文件夹操作
  • 点击左上角创建文件夹在当前目录创建新文件夹
  • 通过左侧树形视图移动文件夹位置
  • 通过表格中操作→重命名修改文件夹名称
文件操作
  • 点击左上角上传文件通过弹窗选择本地文件上传至当前目录
  • 通过表格中操作→移动调整文件位置
  • 通过表格中操作→重命名修改文件名称

数据种子

本模块不包含初始数据种子。

内部结构

领域层

聚合根

遵循 实体最佳实践与规范

  • DirectoryDescriptor(聚合根):表示文件夹
  • FileDescriptor(聚合根):表示文件

仓储

遵循 仓储最佳实践与规范,定义以下自定义仓储:

  • IDirectoryDescriptorRepository
  • IFileDescriptorRepository

领域服务

遵循 领域服务最佳实践与规范

  • DirectoryManager:管理文件夹的创建、重命名、移动和删除
  • FileManager:管理文件的创建、重命名、移动和删除

设置管理

本模块未定义任何设置项。

功能开关

支持按租户启用/禁用模块,并可设置各租户的最大存储空间。完整功能定义参见 FileManagementFeatures 类成员。

应用层

应用服务

  • DirectoryDescriptorAppService(实现 IDirectoryDescriptorAppService):处理文件管理UI的业务用例
  • FileDescriptorAppService(实现 IFileDescriptorAppService):处理文件管理UI的业务用例

数据库支持

通用配置

表/集合前缀与架构

默认使用 Fm 前缀,可通过 FileManagementDbProperties 类的静态属性调整前缀或架构名。

连接字符串

默认使用 FileManagement 连接字符串名称,未定义时将回退至 Default 连接字符串。详情参考 连接字符串文档

Entity Framework Core

数据表
  • FmDirectoryDescriptors
  • FmFileDescriptors

MongoDB

集合
  • FmDirectoryDescriptors
  • FmFileDescriptors

权限控制

所有权限定义请参考 FileManagementPermissions 类成员。

分布式事件

本模块未定义额外分布式事件,请参考 标准分布式事件

在本文档中