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

2024-01-01

我目前正在.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>
  1. html 表单尝试通过 javascript 将文件发布到 iframe。表单和 iframe 都位于同一域下的本地项目(asp.net mvc)上(我在 localhost 下运行它)。

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

任何帮助,将不胜感激


我之前看到过这个 IE bug,最后我改变了我的方法。触发输入元素的更改事件以编程方式被 IE 视为安全风险:((太愚蠢的 IE)

默认情况下 IE 不允许您触发文件元素更改,如果您想要此功能可以使用ajax上传器 http://ajaxuploader.com/ or 文件上传器 https://github.com/valums/file-uploader

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'
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件上传时 IE 出现访问被拒绝错误 的相关文章

随机推荐