Beispiel #1
0
    Uploader.prototype.initStructure = function () {
        if (this.main.nodeName.toLowerCase() !== 'form') {
            helper.replaceMain(this);
        }

        this.callbackName = helper.getGUID('');

        // 往全局下加个函数,用于上传成功后回调
        // if (window.esuiShowUploadResult) {
        //     delete window.esuiShowUploadResult;
        // }

        // window.esuiShowUploadResult = lib.bind(this.showUploadResult, this);

        if (!window.esuiShowUploadResult) {
            window.esuiShowUploadResult = {};
        }
        window.esuiShowUploadResult[this.callbackName] = lib.bind(this.showUploadResult, this);

        var inputContainerClasses =
            helper.getStateClasses(this, 'input-container').join(' ');
        var indicatorClasses =
            helper.getStateClasses(this, 'indicator').join(' ');
        var buttonClasses =
            helper.getStateClasses(this, 'button').join(' ');
        var labelClasses =
            helper.getStateClasses(this, 'label').join(' ');
        var iframeId = helper.getId(this, 'iframe');

        var html = [
            '<div id="' + helper.getId(this, 'input-container') + '" ',
                    'class="' + inputContainerClasses + '">',
                // 按钮
                '<span id="' + helper.getId(this, 'button') + '" ',
                    'class="' + buttonClasses + '">',
                '</span>',
                // 回调函数名
                '<input type="hidden" name="callback" ',
                    // 'value="' + 'esuiShowUploadResult" ',
                    'value="' + 'esuiShowUploadResult[\'' + this.callbackName + '\']" ',
                '/>',
                // sessionToken
                '<input type="hidden" name="sessionToken" ',
                    'value="' + this.getSessionToken() + '" ',
                '/>',
                // 文件上传框
                '<input type="file" ',
                    'id="' + helper.getId(this, 'input') + '" ',
                    'size="1" ',
                    (this.name ? 'name="' + this.name + '" ' : ' '),
                '/>',
                // 类型字段
                '<input type="hidden" name="type" ',
                    'value="' + this.typeIndex + '"',
                '/>'
        ];
        //从附加参数里构造
        if (this.extraArgs) {
            u.each(this.extraArgs, function (arg) {
                html.push(
                    '<input type="hidden" name="' + arg.name + '" ',
                        'value="' + arg.value + '"',
                    '/>'
                );
            });
        }
        html.push(
            '</div>',
            // 指示器
            // 虽然`<progress>`更合适,但基本无法写样式,所以改用`<span>`
            '<div id="' + helper.getId(this, 'indicator-wrapper') + '"',
                'class="' + indicatorClasses + '">',
                '<span id="' + helper.getId(this, 'indicator') + '">',
                '</span>',
            '</div>',
            '<div id="' + helper.getId(this, 'label') +
                '"',
                'class="' + labelClasses + '">' + this.unloadText +
            '</div>',
            // 用来偷偷上传的`<iframe>`元素
            '<iframe id="' + iframeId + '" name="' + iframeId + '"',
            ' src="about:blank"></iframe>'
        );


        // IE是不允许在一个`<form>`里有另一个`<form>`,
        // 并且设置内层`<form>`的`innerHTML`的,因此先移出去,设完了再回来
        // var nextSibling = this.main.nextSibling;
        // var parent = this.main.parentNode;
        // parent.removeChild(this.main);
        this.main.innerHTML = html.join('');
        // parent.insertBefore(this.main, nextSibling);

        // 放个表单在远放,有用
        var form = document.createElement('form');
        form.className = this.helper.getPartClassName('form');
        form.id = helper.getId(this, 'form');
        form.setAttribute('enctype', 'multipart/form-data');
        form.target = iframeId;
        document.body.appendChild(form);

        var input = lib.g(helper.getId(this, 'input'));
        helper.addDOMEvent(
            this,
            input,
            'change',
            function () {
                if (input.value !== '') {
                    this.receiveFile();
                }
            }
        );
    };
Beispiel #2
0
    imgUploader.prototype.initStructure = function () {
        var me = this;

        var html = [
                // 按钮
                '<button id="${id}"',
                    'class="${buttonClasses} ui-button" style="width: ${buttonWidth}px" >',
                    '${text}',
                '</button>'
        ];

        this.main.innerHTML = lib.format(
            html.join(''),
            {
                id: helper.getId(this, 'button'),
                text: me.text,
                buttonClasses: helper.getStateClasses(this, 'button').join(' '),
                buttonWidth: me.buttonWidth
            }
        );

        // 等待试图渲染好了,在设置预览
        setTimeout(function () {
            me.setPreview(me.getRawValue());
        }, 0);

        var button = lib.g(helper.getId(this, 'button'));
        helper.addDOMEvent(
            me,
            button,
            'click',
            function () {

                imgUploadDialog.show({
                    url: me.url || '/file/uploadImage',
                    imgWidth: me.imgWidth || 200,
                    imgHeight: me.imgHeight || 150,
                    editAreaWidth: me.editAreaWidth || 400,
                    editAreaHeight: me.editAreaHeight || 350,
                    maxImgSize: me.maxImgSize || 100000,
                    acceptType: me.acceptType || 'jpg,png,gif',
                    fieldName: me.id || '',
                    description: me.description || [], // 字符串将转成数组
                    dialogOption: {
                        title: me.dialogTitle || '上传图片'
                    },
                    org: me.org,
                    uploadSuccess: function (data) {

                        var url = decodeURIComponent(data.url);
                        var urlSmall = decodeURIComponent(data.urlSmall);

                        me.setValue(url);

                        if (urlSmall) {
                            var cascadeNode = me.viewContext.get(me.smallImgId);
                            if (cascadeNode) {
                                cascadeNode.setValue(urlSmall);
                            }
                        }

                        me.setPreview(data.url);
                    }
                });
            }
        );
    };