我目前正在使用.NET MVC平台下的新网站,我正在尝试通过iframe实现异步用户上传图像。虽然我几乎完成了我的任务,并且在IE 9中的任何其他浏览器中都完全正常运行,但出现以下错误:Microsoft JScript runtime error: Access is denied.
这看起来像是一个安全问题。请允许我使用下面带有注释的代码段来描述我的问题:
1.我有一个带有输入文件的html表单,其隐藏可见性。在表单内部有一个带有type="file"
的输入元素和一个提交按钮(也是隐藏的)。
<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>
html表单尝试通过javascript将文件发布到iframe。表单和iframe都在同一个域下的本地项目(asp.net mvc)上(我在localhost下运行)。
我在输入元素上使用on change事件来捕获该用户选择的内容并触发使用ajax调用提交表单。因此,当我通过javascript调用时:$("#formID").submit()
我收到拒绝访问错误。
任何帮助将不胜感激
答案 0 :(得分:2)
之前我看到了这个IE错误,最后我改变了我的方法。触发输入元素的更改事件程序性地认为是IE的安全风险:((如此愚蠢的IE)
默认情况下,IE不允许您触发文件元素更改,如果您希望此功能可以使用ajaxuploader或fileuploader
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'
});