我試圖讓一個EXTJS應用程序發送附件的電子郵件。所以我有一個非常基本的形式,包括主題的文本字段,另一個帶有inputType的文本字段:用於附件的「文件」以及一個html編輯器。EXTJS Fileupload - IE8安全欄問題
var panel = new Ext.form.FormPanel({
fileUpload:true,
labelAlign: 'right',
monitorValid: true,
border: false,
bodyBorder: false,
defaults:{
anchor: '100%',
labelStyle: 'font-weight:bold;'
},
items: [
{
xtype: 'textfield',
fieldLabel: 'SUBJECT',
name: 'subject',
allowBlank: false
},
{
xtype: 'textfield',
fieldLabel: 'ATTACHMENT',
name: 'file_to_upload',
anchor: '80%',
itemCls: 'attachment-field',
allowBlank: true,
inputType:'file'
},
{
xtype: 'htmleditor',
fieldLabel:'MESSAGE',
name:'msg'
}
]
});
這種形式被放置在一個窗口,這將提交給服務器:當我提交表單使用FF服務器
var window = new Ext.Window({
title: 'Compose a message',
height: 600,
width: 800,
autoScroll: true,
border: false,
bodyBorder: false,
items: panel,
buttons:[
{
text: 'Send',
formBind: true,
handler: function() {
panel.getForm().submit({
url: *Call to the server*,
method : 'POST',
timeout: 300000, // 5min
waitMsg: 'Please wait while we send your email',
success :function(form, action) {
window.close();
}
});
}
},
{
text: 'Close',
handler: function() {
window.close();
}
}
]
});
而且一切都很正常。但IE8出現問題。 IE瀏覽器顯示安全欄說我試圖將文件下載到計算機,這與我正在做的(我正在上傳文件)完全相反!
如何防止觸發此安全欄?
--edit 2010年12月18日16:48 EST-- 是否有可能,它可以由此引起:(從EXTJS basicForm正在添加的文檔),使用正常,不進行
文件上傳'Ajax'技術,也就是說它們不是使用XMLHttpRequests來執行的。相反,表單是以標準方式提交的,並且臨時修改了DOM元素,以便將其目標集設置爲引用動態生成的隱藏,將其插入到文檔中,但在收集返回數據後將其刪除。服務器響應由瀏覽器分析以創建IFRAME的文檔。如果服務器使用JSON發送返回對象,則必須將Content-Type標頭設置爲「text/html」,以便通知瀏覽器將文本原樣插入文檔主體。對於HTML解析器來說重要的字符必須作爲HTML實體發送,因此將「<」編碼爲「<」,「&」,如「&」等。從文檔中檢索響應文本,並創建假的XMLHttpRequest對象包含responseText屬性以符合事件處理程序和回調的要求。請注意,文件上傳數據包是通過內容類型multipart/form發送的,某些服務器技術(特別是JEE)可能需要一些自定義處理才能從數據包內容中檢索參數名稱和參數值。
我不認爲我瞭解那裏的解釋一切......
- 編輯完 -
感謝 阿蘭
設置src不起作用,但它通過將響應內容類型設置爲文本\ html – Ameya 2014-12-02 06:12:53