近來用戶反應希望我們把在線編輯器中的多圖片上傳功能實現,由于他們在編輯商品描寫時常常會有1次上傳多張圖片的需求,如果要逐張選擇的話效力很低,客戶的需求就是我們的尋求,很快我們就把完善功能排到了日程表中,要求盡快實現。
我們在項目中使用的在線編輯器是Kindeditor4.1.10,它們的多文件上傳插件是使用Flash實現的,本來應當就是能使用的,但為何總是顯示上傳失敗的,百度了1下前人的經驗和教訓,出現這類情況,有兩種可能:1)上傳的目標文件夾沒有寫權限,致使上傳的文件沒法進行寫操作,所以上傳失敗;2)有做權限驗證的系統,由于利用Flash上傳時,由于在上傳時Flash插件沒有把SessionId帶過去,引發session丟失致使上傳失敗。
我們在做單張與多張上傳的目標路徑是在同1個母文件夾下的,所以不會是第1種情況引發的,那就惟有是第2種情況了,基于這樣的判斷,那就要在Flash上傳的時候手動加上sessionId參數和值,到服務真個時候再接收下來利用到Session中,這樣應當就可以解決問題了,事實證明,這樣的思路是正確的,下面的具體操作的方法。
打開/kindeditor/plugins/multiimage/multiimage.js,找到postParams這個配置項,把原配置postParams : K.undef(self.extraFileUploadParams, {}),改成postParams : $.extend(K.undef(self.extraFileUploadParams, {}), {"__JentianYunSessionID": jt.cookie('__JentianYunSessionID')}),上面的__JentianYunSessionID應當替換成你們的sessionId的name屬性,這樣,就可以在Flash上傳文件時把你們的SessionId帶到服務端頁面了,然后再要處理上傳文件的頁面的開頭加上
$session = oolsTools::allChar('__JentianYunSessionID');
if($session){//重新設置cookie,解決使用Flash上傳圖片時cookie丟失的問題
session_id($session);
session_start();
}
這樣,kindeditor/Flash實現多文件(圖片)上傳就可以成功了
下一篇 DOM4J生成、解析XML實例