我正在使用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
});
}
});
答案 0 :(得分: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,则可能会发现 this 很有帮助。无论如何,看看你的后端...