1

我正在使用 Extjs - 4.1.0,我想提示下载窗口。我使用了“iframe”。该窗口仅在发布的文件是 zip/mp3 时显示,但当发布的文件是文本/图像文件时,窗口不会出现。是否需要设置一些属性来启用文本/图像/不同文件的下载窗口?

请在下面找到我的代码。

    var record = item.findParentByType('itemcontextmenu').record;
        Ext.Ajax.request({
            url : ORT.Configuration.DOWNLOAD_GRAPHICS_URI+"&graphics="+record.get('id'),
            success: function (response, opt) {

                result = Ext.decode(response.responseText);
                try {Ext.destroy(Ext.get('graphicsDownloadIframe'));}catch(e) {}
                Ext.core.DomHelper.append(document.body, {
                    tag: 'iframe',
                    id:'graphicsDownloadIframe',
                    css: 'display:none;visibility:hidden;height:0px;',
                    src: result.fileName,
                    frameBorder: 0,
                    width: 0,
                    height: 0
                });
            }   
        }); 
4

1 回答 1

2

这完全是关于 mimetype 以及您的浏览器如何使用它。所以我猜你的问题就是那个。这可能会导致浏览器处理接收到的文件不同。

编辑

以下是我仍在使用的辅助类

Ext.ux.util.HiddenForm = function(url,fields){
    if (!Ext.isArray(fields))
        return;
    var body = Ext.getBody(),
        frame = body.createChild({
            tag:'iframe',
            cls:'x-hidden',
            id:'hiddenform-iframe',
            name:'iframe'
        }),
        form = body.createChild({
            tag:'form',
            cls:'x-hidden',
            id:'hiddenform-form',
            action: url,
            target:'iframe'
        });

    Ext.each(fields, function(el,i){
        if (!Ext.isArray(el))
            return false;
        form.createChild({
            tag:'input',
            type:'text',
            cls:'x-hidden',
            id: 'hiddenform-' + el[0],
            name: el[0],
            value: el[1]
        });
    });

    form.dom.submit();

    return frame;
}

用法

Ext.ux.util.HiddenForm('http://localhost/file/fetch',[['PropName','PropValue'],['Prop2Name','Prop2Value']])

服务器接受这些参数并建立一种“FileStreamResult”,在客户端触发下载。如果您使用的是 .Net 或 Java 之类的语言,那么已经有可以使用的实现,如果您使用的是 PHP,您可能会发现很有帮助。无论如何,看看你的后端......

于 2012-11-28T09:13:03.573 回答