在 ckfinder.xml 中配置了圖片大小限制,但上傳超過 1MB 的圖片時限制不生效,大文件仍能上傳成功。
典型錯誤配置:
<!-- 錯誤:帶單位、格式不符 -->
<maxSize>1MB</maxSize>
<!-- 或 -->
<maxSize>1024KB</maxSize>
CKFinder 的 maxSize 參數只接受純數字,單位為字節,不支持 KB/MB 等後綴。
<config>
<backend name="default">
<options>
<maxSize>1048576</maxSize> <!-- 1MB = 1024*1024 = 1048576 字節 -->
</options>
</backend>
</config>
| 目標大小 | 字節值 | 計算方式 |
|---|---|---|
| 500KB | 512000 | 500 * 1024 |
| 1MB | 1048576 | 1024 * 1024 |
| 2MB | 2097152 | 2 * 1024 * 1024 |
| 5MB | 5242880 | 5 * 1024 * 1024 |
| 10MB | 10485760 | 10 * 1024 * 1024 |
CKFinder 提供 PHP、ASP.NET、Java、ColdFusion、Python 等後端實現,所有版本均需在對應配置文件中設置:
ckfinder/config.php → $config['maxSize'] = 1048576;ckfinder/config.ascx 或 web.config 中 <add key="maxSize" value="1048576" />ckfinder/WEB-INF/config.xml → <maxSize>1048576</maxSize>ckfinder/config.py → config.maxSize = 1048576CKEDITOR.replace('editor', {
filebrowserUploadUrl: '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
// 可選:客戶端預檢(非強制,繞過前端仍需後端攔截)
filebrowserUploadMethod: 'form'
});
無論前端如何繞過,後端 connector 必須強制校驗文件大小。CKFinder 核心代碼會自動讀取 maxSize 配置並攔截超限上傳,返回錯誤代碼 206(文件過大)。
{"error":{"number":206,"message":"File size exceeds limit"}}ckeditor/config.js(那裡無上傳大小配置)1M、1024K 等帶單位格式client_max_body_size、IIS maxAllowedContentLength、PHP upload_max_filesize 等