在有人投诉之前,我不使用iframes
(但在尝试修复错误时,我发现问题与iframe
在IE9中出现的奇怪行为有关,并且已编码由其他人)。
我有一个JSON,在点击提交后发送到iframe:
<a id="general_Submit.Label" class="formActionLink" href="javascript:submitAndSendEmail();"/>
<form name="fileUploader" id="fileUploader" enctype="multipart/form-data" method="post" action="ajaxFileUploadAction.action" target="upload_target">
<input type="file" name="upload" id="upload" size="40" onchange="dynFileUploader.uploadFile(this);" onkeyup="dynFileUploader.checkValidFile(this)" />
<iframe name="upload_target" id="upload_target" src="" onload="javascript:dynFileUploader.uploadDone();"> </iframe>
</form>
问题
操作正确返回JSON:
{"JSONClass":"com.lalala.process.email.util.FileContentHolder",
"contentType":"application/pdf","data":[],"fileLength":348364,
"fileName":"001a.<space>bla<space>refrigeration<space><space>-<space>aaa<space>- <space>Tenderer<space>Instructions.pdf",
"tempFileName":"C:\\Users\\humbleUser\\AppData\\Local\\Temp\\UPLOADED_7567343180347343279_001a.<space>bla<space>refrigeration<space><space>-<space>aaa<space>-<space>TendererInstructions.pdf"}
问题在于文件名:在冷藏一词之后有两个空格。当我们使用target="upload_target"
将此json发送到iframe时,它会在没有这些空格之一的情况下到达iframe。例如:
如果我们有文件:test1.pdf,在IE中,它将作为test1.pdf转到iframe
为什么我们有这种行为?当然,它不会在Firefox中发生。
答案 0 :(得分:1)
我可以看到没有人从未面对过它,我认为它是IE的另一种行为,必须将连续的空格视为一个。在搜索时,我注意到这是文件名的常见问题,正如我们在link中看到的那样。
无论如何,在我看来,这个问题的答案是它是来自IE的错误。 我解决了我的错误(当用户试图上传一个包含几个连续空格的文件的文件时,它没有被正确保存,因为这些空格只被减少到一个,所以我通过替换下划线的空格来修复它并且它工作得很好!)