我上一個版本用的是ueditor1.3.6,自從1.4.2版之後,「前端上傳模塊統一改用webuploader」,ueditor在多圖上傳一直考慮漏掉了圖片順序的問題。
個人網站在用戶上傳圖片文章的時候,使用多圖上傳,點確認後,編輯框內的圖片順序是亂的。 看webuploader的問題在於多線程上傳,ueditor對「uploadSuccess」的處理是上傳成功一張,就加入到數組中,這樣若是圖片上傳完成順序是亂的,最終加入文本框的順序也亂了。 我這裏修改了一下js,供你們參考,但願ueditor能改進這個問題: vim dialogs/image/image.js 716 uploader.on('uploadSuccess', function (file, ret) { 717 var $file = $('#' + file.id); 718 try { 719 var responseText = (ret._raw || ret), 720 json = utils.str2json(responseText); 721 if (json.state == 'SUCCESS') { 722 _this.imageList[$file.index()] = json; // 按選擇好的文件列表順序存儲 723 $file.append(''); 724 } else { 725 $file.find('.error').text(json.state).show(); 726 } 727 } catch (e) { 728 $file.find('.error').text(lang.errorServerUpload).show(); 729 } 730 }); vim dialogs/attachment/attachment.js 500 uploader.on('uploadSuccess', function (file, ret) { 501 var $file = $('#' + file.id); 502 try { 503 var responseText = (ret._raw || ret), 504 json = utils.str2json(responseText); 505 if (json.state == 'SUCCESS') { 506 _this.fileList[$file.index()] = json; 507 $file.append(''); 508 } else { 509 $file.find('.error').text(json.state).show(); 510 } 511 } catch (e) { 512 $file.find('.error').text(lang.errorServerUpload).show(); 513 } 514 }); vim dialogs/video/video.js 729 uploader.on('uploadSuccess', function (file, ret) { 730 var $file = $('#' + file.id); 731 try { 732 var responseText = (ret._raw || ret), 733 json = utils.str2json(responseText); 734 if (json.state == 'SUCCESS') { 735 uploadVideoList[$file.index()] = { 736 'url': json.url, 737 'type': json.type, 738 'original':json.original 739 }; 740 $file.append(''); 741 } else { 742 $file.find('.error').text(json.state).show(); 743 } 744 } catch (e) { 745 $file.find('.error').text(lang.errorServerUpload).show(); 746 } 747 }); 如上,都使用了$file.index()做爲數組下標,能夠保證圖片上傳後順序是按照用戶選擇圖片之後,加入到預覽窗口的順序。