CKFinder 命令的行为就像控制器。它们封装了处理请求并生成适当响应(在 CKFinder 中通常是 JSON)所需的逻辑。命令是根据command
URL 参数解析的。
每个命令都必须实现ICommand接口。
当需要命令时,依赖项会注入构造函数。
每个命令类的核心是它的ExecuteAsync方法,所有处理都在这里进行。
执行每个 CKFinder 命令都需要在ACL 配置设置中设置适当的权限。可以使用IRequestAcl接口验证命令所需的权限
所有现有的 CKFinder 命令都可以使用事件系统进行修改(例如添加额外信息或更改默认 JSON 响应)。有关更详细的信息,请参阅事件文章。
在某些情况下,修改从 CKFinder 传递到服务器端连接器的命令参数可能很有用。有关如何执行此操作的示例,请查看AlterCommand插件,该插件位于CKFinder 3 示例 JavaScript 插件存储库中。
自定义 CKFinder 命令可以注入到连接器中。有关更多信息,请参阅 HOWTO 中的自定义命令部分。
查看ImageInfo插件(位于CKFinder 3 示例 JavaScript 插件存储库中)可能也很有用,以了解如何从 JavaScript 插件请求命令。您可以在将命令发送到服务器部分(位于CKFinder 3 JavaScript 文档中)找到更多信息。
名称 | 描述 |
---|---|
command | 要执行的命令的名称。 |
type | 资源类型名称。 |
currentFolder | 当前工作文件夹路径。 |
描述 | 从选定的文件夹复制文件。 |
方法 | POST |
示例请求 | 将
request["files"] = [
{
"name": "file1.jpg",
"type": "Files",
"folder": "/sub1/"
"options": ""
},
{
"name": "file2.png",
"type": "Files",
"folder": "/sub1/"
"options": ""
}
]
/ckfinder/connector?command=CopyFiles&type=Images¤tFolder=/
|
示例响应 | {
"resourceType": "Files",
"currentFolder": {
"path": "/",
"url": "/ckfinder/userfiles/images/",
"acl": 255
},
"copied": 2
}
|
注意 | 请求应包含一个名为files 的数组参数,其元素定义要复制的源文件。每个数组元素应包含以下参数
|
描述 | 创建子文件夹。 |
方法 | POST |
示例请求 | 在 /ckfinder/connector?command=CreateFolder&type=Files¤tFolder=/&newFolderName=My Folder
|
示例响应 | {
"resourceType": "Files",
"currentFolder": {
"path": "/",
"url": "/ckfinder/userfiles/files/",
"acl": 255
},
"newFolder": "My Folder",
"created": 1
}
|
描述 | 删除给定的文件。 |
方法 | POST |
示例请求 | 删除
request["files"] = [
{
"name": "file1.jpg",
"type": "Files",
"folder": "/sub1/"
},
{
"name": "file2.png",
"type": "Files",
"folder": "/sub1/"
}
]
/ckfinder/connector?command=DeleteFiles&type=Files¤tFolder=/
|
示例响应 | {
"resourceType": "Files",
"currentFolder": {
"path": "/",
"url": "/ckfinder/userfiles/files/",
"acl": 255
},
"deleted": 2
}
|
注意 | 请求应包含一个名为files 的数组参数,其元素定义要删除的源文件。每个数组元素应包含以下参数
|
描述 | 删除给定的文件夹。 |
方法 | POST |
示例请求 | 删除 /ckfinder/connector?command=DeleteFolder&type=Files¤tFolder=/sub1/
|
示例响应 | {
"resourceType": "Files",
"currentFolder": {
"path": "/sub1/",
"url": "/ckfinder/userfiles/files/sub1/",
"acl": 255
},
"deleted": 1
}
|
描述 | 从服务器下载文件。 |
方法 | GET |
示例请求 | 从 /ckfinder/connector?command=DownloadFile&type=Files¤tFolder=/&fileName=Test.jpg
|
注意 | 此命令不希望连接器返回文本响应。相反,它必须将文件数据流式传输到客户端。 |
描述 | 将文件上传到给定文件夹。 |
方法 | POST |
示例请求 | 将文件上传到 /ckfinder/connector?command=FileUpload&type=Files¤tFolder=/
|
示例响应 |
{
"resourceType": "Files",
"currentFolder": {
"path": "/",
"url": "/ckfinder/userfiles/files/",
"acl": 255
},
"fileName": "fileName.jpg",
"uploaded": 1
}
|
注意 |
|
描述 | 返回给定文件夹的文件列表。 |
方法 | GET |
示例请求 | 获取Images 资源类型的/Docs/ 文件夹中的文件列表/ckfinder/connector?command=GetFiles&type=Images¤tFolder=/Docs/
|
示例响应 | {
"resourceType": "Images",
"currentFolder": {
"path": "/Docs/",
"url": "/ckfinder/userfiles/images/Docs/",
"acl": 255
},
"files": [
{
"name": "image1.png",
"date": "201406080924",
"size": 1
},
{
"name": "測試.png",
"date": "201406080924",
"size": 12
}
]
}
|
注意 | 文件名可以包含非 ASCII 字符,例如上面的示例中使用的中文。
|
描述 | 返回指向文件的直接 URL。 |
方法 | GET |
示例请求 | 获取存储在Images 资源类型的/kittens/ 文件夹中的名为longcat.jpg 的文件的直接 URL/ckfinder/connector?command=GetFileUrl&type=Images¤tFolder=/kittens/&fileName=longcat.jpg
|
示例响应 | {
"resourceType": "Images",
"currentFolder": {
"path": "/kittens/",
"url": "/ckfinder/userfiles/images/kittens/",
"acl": 255
},
"url": "/ckfinder/userfiles/images/kittens/longcat.jpg"
}
|
注意 | 此命令返回的 URL 取决于为资源类型定义的后端。在大多数情况下,需要为后端定义一个baseUrl 才能获得指向文件的有效直接 URL。 |
描述 | 返回给定文件夹的子文件夹列表。 |
方法 | GET |
示例请求 | 获取Images 资源类型的/Docs/ 文件夹中的子文件夹。/ckfinder/connector?command=GetFolders&type=Images¤tFolder=/Docs/
|
示例响应 | {
"resourceType": "Images",
"currentFolder": {
"path": "/Docs/",
"url": "/ckfinder/userfiles/images/Docs/",
"acl": 255
},
"folders": [
{
"name": "folder1",
"hasChildren": false,
"acl": 255
},
{
"name": "繁體中文字",
"hasChildren": false,
"acl": 255
}
]
}
|
注意 | 文件夹名称可以包含非 ASCII 字符,例如上面的示例中使用的中文。 |
描述 | 返回图像文件调整大小版本的列表。 |
方法 | GET |
示例请求 | 获取存储在Images 资源类型的/kittens/ 文件夹中的longcat.jpg 图像的调整大小版本/ckfinder/connector?command=GetResizedImages&type=Images¤tFolder=/kittens/&fileName=longcat.jpg
|
示例响应 | {
"resourceType": "Images",
"currentFolder": {
"path": "/kittens/",
"url": "/ckfinder/userfiles/images/kittens/",
"acl": 255
},
"originalSize":"1920x1200",
"resized": {
"small": "longcat__480x300.jpg",
"medium": "longcat__600x375.jpg",
"large": "longcat__800x500.jpg",
"__custom": ["longcat__200x125.jpg", "longcat__300x188.jpg"]
}
}
|
注意 | 图像调整大小版本始终保留原始图像的纵横比。当图像调整大小版本与images.sizes 配置选项中定义的任何大小匹配时,它会附加到响应中的适当键下(如上面的示例中的small 、medium 、large )。所有其他现有的调整大小版本都存储在名为__custom 的键下。 |
描述 | 执行基本的图像修改:裁剪、旋转、调整大小。 |
方法 | POST |
示例请求 | 要执行的操作以及所需参数在
request["actions"] = [
{
"action": "rotate",
"angle": 90 // 顺时针旋转的度数。
},
{
"action": "resize",
"width": 300, // 图像最大宽度。
"height": 300 // 图像最大高度。
},
{
"action": "crop",
"x": 0, // 裁剪区域左上角的 X 坐标。
"y": 0, // 裁剪区域左上角的 Y 坐标。
"width": 225, // 裁剪区域宽度。
"height": 150 // 裁剪区域高度。
}
]
取决于
/ckfinder/connector?command=ImageEdit&type=Images¤tFolder=/kittens/&fileName=longcat.jpg
|
示例响应 | {
"resourceType": "Images",
"currentFolder": {
"path": "/kittens/",
"url": "/ckfinder/userfiles/images/kittens/",
"acl": 255
},
"saved": 1
}
|
描述 | 返回有关图像文件尺寸的信息。 |
方法 | GET |
示例请求 | 获取存储在 /ckfinder/connector?command=ImageInfo&type=Images¤tFolder=/kittens/&fileName=longcat.jpg
|
示例响应 | {
"resourceType": "Images",
"currentFolder": {
"path": "/kittens/",
"url": "/ckfinder/userfiles/images/kittens/",
"acl": 255
},
"width": 1440,
"height": 900
}
|
描述 | 创建图像文件的调整大小版本。 |
方法 | GET |
示例请求 | 创建存储在 /ckfinder/connector?command=ImagePreview&type=Images¤tFolder=/kittens/&fileName=longcat.jpg&size=450x450
|
示例响应 | 此命令不希望连接器返回文本响应。相反,它必须将图像数据流式传输到客户端。 |
注意 | 返回的图像始终保留原始图像的纵横比(使用为边框计算出的较高缩放因子)。当请求的大小与原始图像的纵横比不匹配时,将更正请求的大小。 使用此命令生成的图像不会存储在服务器端。 |
描述 | 创建图像文件的调整大小版本。 |
方法 | POST |
示例请求 | 创建存储在 /ckfinder/connector?command=ImageResize&type=Images¤tFolder=/kittens/&fileName=longcat.jpg&size=450x450
|
示例响应 | {
"resourceType": "Images",
"currentFolder": {
"path": "/kittens/",
"url": "/ckfinder/userfiles/images/kittens/",
"acl": 255
},
"url":"/ckfinder/userfiles/images/kittens/__thumbs/longcat.jpg/longcat__450x281.jpg" // 文件的直接 URL
}
|
注意 | 返回的图像始终保留原始图像的纵横比(使用为边框计算出的较低缩放因子)。当请求的大小与原始图像的纵横比不匹配时,将更正请求的大小。 使用此命令生成的图像存储在当前文件文件夹中创建的名为 |
描述 | 这是 CKFinder 发出的第一个命令。它返回连接器的常规设置和所有已配置的资源类型。 |
方法 | GET |
示例请求 | /ckfinder/connector?command=Init
|
示例响应 | {
"enabled": true,
"s": "",
"c": "",
"thumbs": ["150x150", "300x300", "500x500"],
"images":{"max":"500x400","sizes":{"small":"480x320","medium":"600x480","large":"800x600"}},
"uploadMaxSize": "425167",
"uploadCheckImages": true,
"resourceTypes": [
{
"name": "Files",
"url": "/ckfinder/userfiles/files",
"allowedExtensions": "7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,zip",
"deniedExtensions": "",
"hash": "8b787e3ea25b5079",
"hasChildren": false,
"acl": 1023,
"maxSize": 32768
},
{
"name": "Images",
"url": "/ckfinder/userfiles/images",
"allowedExtensions": "bmp,gif,jpeg,jpg,png",
"deniedExtensions": "",
"hash": "b8de0a3f3cb3cd1f",
"hasChildren": false,
"acl": 1023,
"maxSize": 65536
}
]
}
|
描述 | 将文件从选定的文件夹移动。 |
方法 | POST |
示例请求 | 将两个文件从
request["files"] = [
{
"name": "file1.jpg",
"type": "Files",
"folder": "/sub1/"
"options": ""
},
{
"name": "file2.png",
"type": "Files",
"folder": "/sub1/"
"options": ""
}
]
/ckfinder/connector?command=MoveFiles&type=Files¤tFolder=/
|
示例响应 | {
"resourceType": "Files",
"currentFolder": {
"path": "/",
"url": "/ckfinder/userfiles/files/",
"acl": 255
},
"moved": 2
}
|
注意 | 请求应包含一个名为 files 的数组参数,其元素定义要移动的源文件。每个数组元素应包含以下参数
|
描述 | 跟踪时间消耗的连接器命令中操作的进度。 |
方法 | GET |
示例请求 | 可以通过传递一个名为 /ckfinder/connector?command=RenameFolder&type=Files¤tFolder=/foo/&newFolderName=bar&operationId=i52q7a7db83rz3n6
然后可以使用对 /ckfinder/connector?command=Operation&operationId=i52q7a7db83rz3n6
|
示例响应 | {
"total": 291,
"current": 128
}
|
注意 | 并非所有命令都支持操作跟踪,此功能可能取决于为后端定义的存储类型。 此命令可以使用以下可选参数
|
描述 | 将文件提供给浏览器,而不强制下载。此命令在您想要在网页上使用没有直接访问权限的文件的情况下很有用。这些可能是存储在后端(如私有 FTP 服务器)上的文件,或者不在 Web 服务器根文件夹中的文件。如果后端定义为 注意:如果您决定使用此选项,则 CKFinder 生成的所有链接都将指向 |
方法 | GET |
示例请求 | /ckfinder/connector?command=Proxy&type=Files¤tFolder=/&fileName=foo.jpg
|
示例响应 | 此命令不希望连接器返回文本响应。相反,它必须将文件数据流式传输到客户端。 |
注意 | 此命令可以使用以下可选参数
|
描述 | 将文件上传到给定文件夹。此命令与 FileUpload 非常相似,它用于处理来自 CKEditor 图像或链接对话框的上传。 |
方法 | POST |
示例请求 | 此命令接受一个名为 将文件上传到 /ckfinder/connector?command=FileUpload&type=Files¤tFolder=/
|
示例响应 | {
"resourceType": "Files",
"currentFolder": {
"path": "/",
"url": "/ckfinder/userfiles/files/",
"acl": 255
},
"fileName": "fileName.jpg",
"uploaded": 1
}
|
注意 |
|
描述 | 重命名文件。 |
方法 | POST |
示例请求 | 将 /ckfinder/connector?command=RenameFile&type=Files¤tFolder=/sub1/&fileName=foo.jpg&newFileName=bar.jpg
|
示例响应 | {
"resourceType": "Files",
"currentFolder": {
"path": "/sub1/",
"url": "/ckfinder/userfiles/files/sub1/",
"acl": 255
},
"name": "foo.jpg",
"newName":"bar.jpg",
"renamed": 1
}
|
描述 | 重命名文件夹。 |
方法 | POST |
示例请求 | 将 /ckfinder/connector?command=RenameFolder&type=Files¤tFolder=/sub1/&newFolderName=sub1_renamed
|
示例响应 | {
"resourceType": "Files",
"currentFolder": {
"path": "/sub1/",
"url": "/ckfinder/userfiles/files/sub1/",
"acl": 255
},
"newName": "sub1_renamed",
"newPath": "/sub1_renamed/",
"renamed": 1
}
|
描述 | 将 Base64 编码的 PNG 图像保存到文件。 |
方法 | POST |
示例请求 | 将 /ckfinder/connector?command=SaveImage&type=Files¤tFolder=/&fileName=Test.jpg
|
示例响应 | {
"resourceType": "Files",
"currentFolder": {
"path": "/",
"url": "/ckfinder/userfiles/files/",
"acl": 255
},
"saved": 1,
"date": "201406080924",
"size": 1
}
|
描述 | 下载图像文件的缩略图。 |
方法 | GET |
示例请求 | 从 /ckfinder/connector?command=Thumbnail&type=Files¤tFolder=/&fileName=Test.jpg&size=150x150
|
响应 | 此命令不希望连接器返回文本响应。相反,它必须将缩略图文件数据流式传输到浏览器。 |
注意 |
可以在主配置文件中覆盖默认尺寸。 |