CKFinder 是一个 Ajax 应用程序,其前端完全用 JavaScript 编写。它通过 JSON 消息与服务器通信。在服务器端,有一个用特定服务器语言编写的“连接器”,用于处理前端请求。下图说明了这一点
CKFinder 3 for ASP.NET 连接器分为以下 NuGet 库
每个应用程序至少应该引用以下包
此包包含 CKFinder 的 JavaScript 部分。
支持配置文件。处理应用程序配置 (Web.config
, App.config
) 和独立文件类型。
导出 CKSource.CKFinder.Connector.Config 命名空间。
在 ConnectorBuilderConfigExtensions 类中实现了最重要的 LoadConfig 方法。在调用 LoadConfig 之前,在 FileSystemFactory 类中注册所有可用的文件系统非常重要。
负责处理命令、发布事件和加载插件的核心库。
导出 CKSource.CKFinder.Connector.Core 命名空间。
此包中包含的最重要的类是 ConnectorBuilder,它应该用于设置连接器。
一组可能的托管包。CKFinder 可以托管在 Owin 或 WebApi 环境中。
项目中只应使用其中一个包。
在 Owin 环境中托管。
导出 CKSource.CKFinder.Connector.Host.Owin 命名空间。
此包中包含的最重要的类是 OwinConnectorFactory,它应该用于在 Build 方法中构建连接器。
提供键值存储的各种适配器的包。CKFinder 使用键值存储来缓存。
项目中只应使用其中一个包。
基于文件系统的键值存储适配器。
导出 CKSource.CKFinder.Connector.KeyValue.FileSystem 命名空间。
提供 FileSystemKeyValueStoreProvider.
用于键值存储的实体框架适配器。
重要:此键值存储适配器可能会导致性能问题,并且已弃用。请改用 CKSource.CKFinder.Connector.KeyValue.FileSystem。
导出 CKSource.CKFinder.Connector.KeyValue.EntityFramework 命名空间。
提供 EntityFrameworkKeyValueStoreProvider.
CKFinder 中日志记录的 NLog 适配器。
导出 CKSource.CKFinder.Connector.Logs.NLog 命名空间。
此包中包含的最重要的类是 NLogLoggerAdapterFactory,它应该提供给 LoggerManager.LoggerAdapterFactory 属性。
所有文件系统的通用类。
导出 CKSource.FileSystem 命名空间。
Amazon S3 文件系统适配器。
导出 CKSource.FileSystem.Amazon 命名空间。
Azure Storage 文件系统适配器。
导出 CKSource.FileSystem.Azure 命名空间。
Dropbox 文件系统适配器。
导出 CKSource.FileSystem.Dropbox 命名空间。
FTP 文件系统适配器。
导出 CKSource.FileSystem.Ftp 命名空间。
本地文件系统适配器。
导出 CKSource.FileSystem.Local 命名空间。
CKFinder ASP.NET 连接器提供了一组事件,可用于更改默认应用程序行为。每个事件都由其唯一的类型标识,并且可以被任意数量的侦听器监听。
要将侦听器附加到事件,可以使用存储在应用程序依赖项注入容器中的事件聚合器对象
可以通过不调用下一个事件处理程序来停止事件传播。
要删除事件侦听器,请调用 Unsubscribe 方法
可以在事件处理程序本身中进行取消订阅。
这些事件在解析特定命令后触发,即确定应该使用哪个命令类来处理当前请求。
传递给事件侦听器的参数是 BeforeCommandEvent 类型的对象的实例,它包含以下信息
在事件侦听器中,可以提供将在命令之前执行的任何其他代码。
要检查触发事件的命令,应该将命令实例的类型与命令类型进行比较
下表列出了内置命令的完整列表
命令类型 | 描述 |
---|---|
CopyFiles | 从选定的文件夹复制文件。 |
CreateFolder | 创建子文件夹。 |
DeleteFiles | 删除给定的文件。 |
DeleteFolder | 删除给定的文件夹。 |
DownloadFile | 从服务器下载文件。 |
FileUpload | 将文件上传到给定的文件夹。 |
GetFiles | 返回给定文件夹的文件列表。 |
GetFileUrl | 返回文件的直接 URL。 |
GetFolders | 返回给定文件夹的子文件夹列表。 |
GetResizedImages | 返回图像文件调整大小版本的列表。 |
ImageEdit | 执行基本图像修改:裁剪、旋转、调整大小。 |
ImageInfo | 返回图像文件尺寸信息。 |
ImagePreview | 创建图像文件的调整大小版本。 |
ImageResize | 创建图像文件的调整大小版本。 |
Init | 这是 CKFinder 发出的第一个命令。它返回连接器的常规设置和所有配置的资源类型。 |
MoveFiles | 将文件从选定的文件夹移动。 |
Operation | 跟踪耗时连接器命令中操作的进度。 |
Proxy | 将文件提供给浏览器,但不强制下载。此命令在您希望在网页上使用无法直接访问的文件时很有用。这些文件可能存储在后端(如私有 FTP 服务器),或者不在 Web 服务器根文件夹中。如果后端定义为 Proxy ,则 CKFinder 生成的所有链接都将指向 Proxy 命令。 |
快速上传 | 将文件上传到指定文件夹。此命令与 FileUpload 非常类似,用于处理来自 CKEditor 图片或链接对话框的上传。 |
重命名文件 | 重命名文件。 |
重命名文件夹 | 重命名文件夹。 |
保存图片 | 将 Base64 编码的 PNG 图片保存到文件。 |
缩略图 | 下载图片文件的缩略图。 |
这些事件在命令类内部触发,在执行任何重要操作(如上传文件、重命名、删除或移动文件和文件夹)之前触发。
命令 | 事件类型 | 说明 |
---|---|---|
CopyFiles | CopyFileEvent | 每个被复制的文件都会触发此事件 |
CreateFolder | CreateFolderEvent | - |
DeleteFiles | DeleteFileEvent | 每个被删除的文件都会触发此事件 |
DeleteFolder | DeleteFolderEvent | - |
DownloadFile | DownloadFileEvent | - |
FileUpload | FileUploadEvent | - |
GetFiles | - | - |
GetFileUrl | - | - |
GetFolders | - | - |
GetResizedImages | - | - |
ImageEdit | ImageEditEvent | - |
ImageInfo | - | - |
ImagePreview | - | - |
ImageResize | ResizeImageEvent | - |
Init | - | - |
MoveFiles | MoveFileEvent | 每个被移动的文件都会触发此事件 |
Operation | - | - |
Proxy | ProxyDownloadEvent | - |
快速上传 | FileUploadEvent | - |
重命名文件 | RenameFileEvent | - |
重命名文件夹 | RenameFolderEvent | - |
保存图片 | SaveImageEvent | - |
缩略图 | - | - |
这些事件在特定命令返回响应后触发。
传递给事件监听器的参数是一个 AfterCommandEvent 类型的对象,它包含以下信息
在事件监听器中,可以提供任何将在命令执行后执行的附加代码,也可以替换事件对象中携带的命令结果对象,这样新的提供的响应对象将被使用。
要检查哪个命令触发了事件,请参阅 命令前事件 的描述。