【经验】Ueditor错位问题

百度编辑器ueditor批量上传图片或者批量上传文件时,文件名称和内容不符合,错位问题

百度编辑器ueditor批量上传附件时,上传后的文件和实际文件名称错误,比如实际是文件名“dongcoder.xls”,上传后可能就成了“懂客.xls”。原因就是,上传文件时是异步上传,同时进行,导致上传完成的顺序和实际的顺序可能是不一样的,文件都有大小的不同。这是百度编辑器ueditor的一个BUG。
我的百度编辑器版本:1.4.3
修改文件可以解决,相应文件:ueditor\dialogs\attachment\attachment.js

大约在510行处,将原来的“_this.fileList.push(json);”注销,新加“_this.fileList[$file.index()] = json;”,详细参见下图:

【经验】Ueditor错位问题_第1张图片

            uploader.on('uploadSuccess', function (file, res) {
                var $file = $('#' + file.id);
                try {
                    var responseText = (res._raw || res),
                        json = utils.str2json(responseText);
                    if (json.state == "SUCCESS") {
                        // _this.imageList.push(json);
                        _this.fileList[$file.index()] = json;
                        $file.append('');
                    } else {
                        $file.find('.error').text(json.state).show();
                    }
                } catch (e) {
                    $file.find('.error').text(lang.errorServerUpload).show();
                }
            });

在下方大约551行处,getInsertList方法内,增加“if (data == undefined) { continue; }”,详细参见下图:

【经验】Ueditor错位问题_第2张图片

        getInsertList: function () {
            var i, link, data, list = [],
                prefix = editor.getOpt('fileUrlPrefix'),
                fileSrcField = editor.getOpt("fileUploadService")(this, editor).fileSrcField || 'url',
                fileSrc = '',
                fileSrcFieldKeys = fileSrcField.split('.');

            for (i = 0; i < this.fileList.length; i++) {
                data = this.fileList[i];
                if (data == undefined) { continue; }

                if(fileSrcFieldKeys.length > 1) {
                    function setFileSrc(obj, keys, index) {
                        obj = obj[keys[index]];
                        if (index < keys.length - 1) {
                            setFileSrc(obj, keys, index += 1)
                        } else {
                            fileSrc = obj;
                        }
                    }

                    setFileSrc(data, fileSrcFieldKeys, 0);
                } else {
                    fileSrc = data[fileSrcField];
                }
                link = fileSrc;
                list.push({
                    title: data.original || link.substr(link.lastIndexOf('/') + 1),
                    url: prefix + link
                });
            }
            return list;
        }

你可能感兴趣的:(【经验】Ueditor错位问题)