文件上传时IE8空白文件名

时间:2012-08-31 01:07:12

标签: html file-upload internet-explorer-8

我正在尝试将图片上传到我们的服务器,它适用于Chrome和Firefox以及IE9,但不适用于IE8。对于IE8,请求中的文件名显示为空白,但在Chrome中则不显示。在IE8的情况下,服务器检索的文件是0千字节(应该是219kb)。

HTML

<form action="$!toolsServiceUrl" enctype="multipart/form-data" method="post" id="left-section" class="section right-border container">
    <input type="hidden" name="okRedirectURL" value="$!okRedirect" />
    <input type="hidden" name="errorRedirectURL" value="$!errorRedirect" />
    <input type="hidden" name="updateSection" value="LOGO_AND_MESSAGE" />
    <input type="hidden" name="loginGuid" value="$!loginGuid" />
    <input id="current-file" class="file hide" type="file" accept="image/*" name="file"/>
    <a id="upload-now" class="btn upload open-file">$!INTL_UploadNew</a>
    <input href="#" class="btn btn-primary submit-for-review" type="submit" value="$!INTL_SubmitForReview" />
</form>

Chrome请求有效负载

------WebKitFormBoundaryhaQZT4Syn2OCktxQ
Content-Disposition: form-data; name="file"; filename="wallpaper-2055060.jpg"
Content-Type: image/jpeg

IE8请求有效负载

-----------------------------7dc230b1a0a3a
Content-Disposition: form-data; name="file"; filename=""
Content-Type: application/octet-stream

(我省略了请求有效负载中的所有无关数据)

我需要它才能在IE8上工作,因为我们的很多用户都使用IE8。

2 个答案:

答案 0 :(得分:1)

最有可能隐藏文件输入字段,然后使用javascript触发点击事件打开文件对话框。 IE假定点击为非安全,不会发送到服务器。

为避免这种情况,您需要点击真实字段或制作<label for="idOfFileInputField">,这也会触发&#34;安全&#34;点击事件。

您的代码可能如下所示:

<form action="$!toolsServiceUrl" enctype="multipart/form-data" method="post" id="left-section" class="section right-border container">
   ...
   <input id="current-file" class="file hide" type="file" accept="image/*" name="file"/>
   <label for="current-file" id="upload-now" class="btn upload open-file">$!INTL_UploadNew</label>
   ...
</form>

您不应该使用display:none隐藏文件输入字段,否则不会触发标签点击。相反,你可以使position:absolute; left:-9999px之类的内容隐藏在可见的视口之外。

答案 1 :(得分:0)

从远程计算机尝试相同的操作,您可能会得到不同的结果。 IE 8中存在关于文件上载的“安全功能”(错误),导致它们不发送正在上载的文件的正确路径。据我所知,这只是在本地访问本地网站时的一个问题。

查看此网站了解更多信息: http://acidmartin.wordpress.com/2009/06/09/the-mystery-of-cfakepath-unveiled/

如果您在浏览器首选项中将站点添加到受信任的站点,则从远程计算机看起来应该没问题。但在当地它仍然无法运作。