2012-09-05 26 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' 
}); 
相关问题