首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

CKEditor + CKFinder 圖片上傳大小限制失效?正確配置姿勢在這裡

     編輯:程式設計疑難解答

問題現象

在 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>

常用大小換算表

目標大小字節值計算方式
500KB512000500 * 1024
1MB10485761024 * 1024
2MB20971522 * 1024 * 1024
5MB52428805 * 1024 * 1024
10MB1048576010 * 1024 * 1024

分語言版本的額外配置

CKFinder 提供 PHP、ASP.NET、Java、ColdFusion、Python 等後端實現,所有版本均需在對應配置文件中設置:

  • PHP:ckfinder/config.php → $config['maxSize'] = 1048576;
  • ASP.NET:ckfinder/config.ascx 或 web.config 中 <add key="maxSize" value="1048576" />
  • Java:ckfinder/WEB-INF/config.xml → <maxSize>1048576</maxSize>
  • Python:ckfinder/config.py → config.maxSize = 1048576

雙重保障:前端 + 後端驗證

CKEditor 前端攔截(用戶體驗)

CKEDITOR.replace('editor', {
    filebrowserUploadUrl: '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
    // 可選:客戶端預檢(非強制,繞過前端仍需後端攔截)
    filebrowserUploadMethod: 'form'
});

後端強制限制(安全基線)

無論前端如何繞過,後端 connector 必須強制校驗文件大小。CKFinder 核心代碼會自動讀取 maxSize 配置並攔截超限上傳,返回錯誤代碼 206(文件過大)。

驗證步驟

  1. 修改配置後重啟應用服務器(Tomcat/IIS/Apache 等)
  2. 清除瀏覽器緩存,重新加載編輯器頁面
  3. 嘗試上傳 1.5MB 圖片,應彈出「文件大小超過限制」提示
  4. 檢查服務器日誌確認 connector 返回 {"error":{"number":206,"message":"File size exceeds limit"}}

常見避坑指南

  • ❌ 不要只修改 ckeditor/config.js(那裡無上傳大小配置)
  • ❌ 不要使用 1M、1024K 等帶單位格式
  • ✅ 確認修改的是正確後端語言對應的配置文件
  • ✅ 檢查服務器層面限制:Nginx client_max_body_size、IIS maxAllowedContentLength、PHP upload_max_filesize 等
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved