2012-09-05 25 views
4

我目前工作的.NET下的MVC平臺的一個新的網站,我試圖通過iframe來實現異步用戶上傳的圖像。儘管我幾乎完成了我的任務,並且在IE 9中的任何其他瀏覽器都失敗並出現以下錯誤:Microsoft JScript runtime error: Access is denied.它看起來像是一個安全問題。請允許我使用以下代碼片段來描述我的問題,其中包含以下評論: 1.我有一個帶有輸入文件的html表單,其可見性處於隱藏狀態。在表單中有一個輸入元素type="file"和一個提交按鈕(也隱藏)。訪問被拒絕錯誤在IE瀏覽器,而文件上傳

<div class="brandLogo"> 
<p>@identity._RetailerLogo.Caption</p> 
<div id="LogoContainer" class="imgLogo"> 
    <img id ="CompanyLogo" src="@DefaultRetailerImage" alt="" title="@Model._ADD_LOGO_IMAGE"> 
</div> 
<p class="txtR"> 
<a id="UploadLogo" href="#" style="position: absolute; left: -999em; top: -999em;">Upload 
</a> 
</p> 

<form id="UploadForm" 
    action="@Url.Action("editLogo", "Profile")" 
    method="POST" enctype="multipart/form-data" 
    name="UploadForm" 
    target="UploadTarget" 
    style="position: absolute; left: -999em; top: -999em;"> 
<input name="UploadLogoFile" id="UploadLogoFile" type="file" onchange="clickUploadButton();" /> 
<input type="button" id="SubmitLogoForm" value="Save Image" /> 
</form> 

<iframe id="UploadTarget" onload="UploadImage_Complete();" name="UploadTarget" style="position: absolute; 
left: -999em; top: -999em;"></iframe> 

  1. HTML表單試圖通過JavaScript文件發佈到一個iframe。 form和iframe都在我的本地項目(asp.net mvc)下的同一個域中(我在localhost下運行)。

  2. 我使用的是在輸入元素上改變事件來捕獲用戶選擇的東西,並觸發提交與Ajax調用的形式。所以當我通過javascript調用時:$("#formID").submit()我得到一個訪問被拒絕的錯誤。

任何幫助,將不勝感激

回答

2

我看到這個IE漏洞之前,最後我改變了我的方法.triggering輸入元素的變化事件programmically考慮通過IE的安全隱患:((這麼笨IE)

默認情況下,IE不會讓你觸發文件元素的變化,如果你想你這個功能可以使用ajaxuploaderfileuploader

var uploader = new qq.FileUploader({ 
// pass the dom node (ex. $(selector)[0] for jQuery users) 
element: document.getElementById('file-uploader'), 
// path to server-side upload script 
action: '/server/upload' 
}); 
相關問題