IE浏览器上传文件时出现访问被拒绝错误

4
我目前正在使用.NET MVC平台开发一个新的网站,并尝试通过iframe实现异步用户上传图片。虽然我几乎完成了任务,并且在任何其他浏览器中都是完全功能的,但在IE 9中出现了以下错误:Microsoft JScript运行时错误:拒绝访问。这似乎是一个安全问题。请允许我使用下面的代码片段和注释描述我的问题: 1. 我有一个带有隐藏输入文件的html表单。在表单内部有一个元素和一个提交按钮(也是隐藏的)。
<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。表单和iframe都在我的本地项目(asp.net mvc)下,属于同一个域名(我在localhost下运行)。

  2. 我正在使用输入元素上的on change事件来捕获用户选择的内容,并触发带有ajax调用的表单提交。所以当我通过javascript调用:$("#formID").submit()时,我会得到一个访问被拒绝的错误。

任何帮助都将不胜感激。

1个回答

2
我之前遇到过这个IE浏览器的bug,最终我改变了我的方法。通过程序触发输入元素(change事件)被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'
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接