起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1711|回复: 5

[结贴] attachmentSimple组件上传文件后会执行一次下载

[复制链接]

140

主题

573

帖子

1080

积分

金牌会员

Rank: 6Rank: 6

积分
1080
QQ
发表于 2017-2-8 22:25:49 | 显示全部楼层 |阅读模式
attachmentSimple组件上传文件(post)后会执行一次下载(get),这个get操作具体代码在哪里呢?我需要修改!

140

主题

573

帖子

1080

积分

金牌会员

Rank: 6Rank: 6

积分
1080
QQ
 楼主| 发表于 2017-2-8 22:28:29 | 显示全部楼层
attachmentSimple组件的设计真的不好使!我需要的场景是,利用该组件上传文件,但是文件名不是由该组件生产的uuid,而是后台生成的;然后,后台保存文件后会将唯一编码返回给该组件;然后,组件的回显需要将服务端返回的唯一编码提交后才能正确下载;
所以,需要修改该组件;
回复 支持 反对

使用道具 举报

140

主题

573

帖子

1080

积分

金牌会员

Rank: 6Rank: 6

积分
1080
QQ
 楼主| 发表于 2017-2-8 22:40:16 | 显示全部楼层
压缩过的core.min.js是否有没有压缩的合并版本呢?
回复 支持 反对

使用道具 举报

发表于 2017-2-9 10:23:38 | 显示全部楼层
attachmentSimple  开源的!可以自己改源码!

压缩的合并版本 ,请问你指的是什么??看描述文件:
/UI2/system/common.min.js.xml

合并批处理:tools\dist\dist.bat
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

140

主题

573

帖子

1080

积分

金牌会员

Rank: 6Rank: 6

积分
1080
QQ
 楼主| 发表于 2017-2-9 22:32:07 | 显示全部楼层
今天已经全部改好了,谢谢!
回复 支持 反对

使用道具 举报

140

主题

573

帖子

1080

积分

金牌会员

Rank: 6Rank: 6

积分
1080
QQ
 楼主| 发表于 2017-2-10 10:13:29 | 显示全部楼层
1 attachmentSimple.js修改
initUploader:function(){
                        var self = this;
                        var actionUrl = require.toUrl(this.actionUrl);
                        self.uploader = new Uploader(self.$domNode.find('.x-item-upload'),{
                actionUrl:actionUrl,
                compress: this.compress,
                accept:this.accept
            });
                        self.uploader.retCode = ''; // TODO: 增加retCode字段 2017-02-09

getFileUrl : function(realFileName,storeFileName,ownerID,operateType){
                var url = new justep.URL(this.actionUrl);
                url.setParam('storeFileName',storeFileName);
                url.setParam('ownerID',ownerID);
                url.setParam('realFileName',realFileName);
                url.setParam('operateType',operateType);
                url.setParam('retCode', ((this.uploader.retCode) ? this.uploader.retCode: '')); // TODO: 增加retCode字段参数 2017-02-09
                return require.toUrl(url.toString());
        },

addItem : function(realFileName,storeFileName,ownerID){
                    var items = this.getItems();
                    items.push({
                            storeFileName :storeFileName,
                            realFileName : realFileName,
                            retCode: (this.uploader.retCode) ? this.uploader.retCode: '' // TODO: 增加retCode字段 2017-02-09
                    });
                    this.bindData.setValueByID(this.bindRelation,JSON.stringify(items),ownerID);
            },

2 调用处对attachmentSimple做定制
/**
         * 自定义attachmentSimple1
         */
        Model.prototype.reInitAttachmentSimple = function(attachment) {
                var self = this;
                // 自定义图片显示路径
                attachment.previewPicture = function($object){
                //console.log("attachment.previewPicture");
                var url = $object.retCode.get();
                if(url){
                        return "url('"+url+"')";
                }
        };
        // 自定义图片下载路径
                attachment.downloadFile = function(realFileName,storeFileName,ownerID){
                //console.log("attachment.downloadFile");
                var val = attachment.bindData.getValueByID('att', ownerID);
                var data = [];
                if(val) {
                            try {
                                    data = JSON.parse(val);
                            } catch(e) {
                                    if(console){
                                            console.log("绑定的数据解析失败[value:"+val+"]",e);
                                    }
                                    data =[];
                            }
                            $.each(data, function(index, obj) {
                                    if (obj.storeFileName == storeFileName) {
                                            var fileApi = require("$UI/system/components/justep/docCommon/fileApi");
                                        var url = obj.retCode;
                                        url && fileApi.browse(url);
                                        return false;
                                    }
                            });
                    }
        };
        // 增加删除文件事件
        attachment.removeItemByStoreID = function(storeFileName, ownerID){
                    var items = attachment.getItems(ownerID);
                    var delItem = null;
                    if(items) {
                            for(var i =0; i<items.length; i++){
                                    if(items[i].storeFileName == storeFileName){
                                            delItem = items.splice(i,1);
                                            break;
                                    }
                            }
                    }
                    attachment.bindData.setValueByID(attachment.bindRelation, JSON.stringify(items), ownerID);
                    // -- 判断是否达到图片上限 -- //
                        var attVal = attachment.bindData.getValue("att");
                        if (attVal && $.parseJSON(attVal).length < 5) {
                           $('.x-item-upload.x-upload-hide').removeClass('x-upload-hide'); // 显示上传
                        }
                    /*if (delItem) { // TODO: 这里添加删除事件
                            var url = ;
                            $.ajax({
                                url:url,
                                cache:false,
                                async:false
                        }).fail(function(){
                                throw "delFile error";
                        });
                    }*/
            }
        };

//判断只要特定的文件类型可以上传
                uploader.on('onFileSelected',function(event){
                        var fileType = event.file.type;
                        //自己判断fileType,如果不符合条件用cancel为true终止选择文件
                        if(fileType != "image/jpeg" && fileType != "image/png" && fileType != "image/gif"){
                                event.cancel = true;
                                project.alert("请上传图片!");
                        }
                        //限制大小
                        $.each(event.files, function(i, file) {
                                if (file.size > 10485760) {// 10M
                                    project.alert("上传的文件大小不能超过10MB");
                                    event.cancel = true;
                                    return;
                                }
                        });
                        //限制文件个数
                        var preNum = $.parseJSON(data.getValue("att")).length; // 默认给att赋值“[]”
                        var curNum = event.files.length;
                        if (preNum + curNum > 5) {
                                project.alert("最多上传5个文件!");
                            event.cancel = true;
                            return;
                        }
                });
                uploader.un('onSuccess');
                uploader.on('onSuccess', function(event){
                        var statusCode = event.response.statusCode;
                        var message = event.response.message;
                        if (statusCode == '200') {
                                uploader.retCode = message;
                               
                                // -- 执行原始组件的onSuccess回调方法 -- //
                                attachmentSimple1.$domNode.find('.x-doc-process-bar').hide().css('width','0%');
                                var _data = {
                                        source: attachmentSimple1,
                                        data:event.data,
                                        fileName:event.data.fileName
                                };
                                attachmentSimple1.fireEvent('onSuccess',_data);
                                attachmentSimple1.changeState("upload");
                                attachmentSimple1.addItem(_data.data.fileName,_data.data.storeFileName,_data.data.ownerID);
                               
                                // -- 判断是否达到图片上限 -- //
                                var attVal = data.getValue("att");
                                if (attVal && $.parseJSON(attVal).length >= 5) {
                                   $('.x-item-upload').addClass('x-upload-hide');//隐藏上传
                                }
                        } else {
                                project.alert('上传图片失败!');
                                // 重置进度条
                                attachmentSimple1.$domNode.find('.x-doc-process-bar').hide().css('width','0%');
                        }
                });
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-28 08:26 , Processed in 0.105697 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表