0

我想使用以下 html 和 js 将文件上传到我的服务器:

<script type="text/javascript">
    $(function() {
        $('#uploadimageBtn').click(function() {
                $('#imageInput').click();
        });

        $('#imageInput').change(function(event) {
                $('#loading-spinner').show();
                var file = $(this).val();
                var fileName = file.split("\\");
                $('#uploadimageBtn-inner').html("Uploading..."); 
                $('#uploadForm').submit();
                event.preventDefault();
        });                
    });
</script>

<div id="uploadimageBtn">
    <g:img id="loading-spinner" style="display:none;" file="loading.gif"/>
    <div id="uploadimageBtn-inner">Click to upload a file</div>
</div>  

<g:form name="uploadForm" action="update" method="post" enctype="multipart/form-data">
    <div style="height: 0px;width: 0px; overflow:hidden;">
        <input id="imageInput" name="image" type="file" value="upload"/>
    </div>
</g:form>

它在所有主要浏览器中都能完美运行,但在 IE 中却无法运行。

那么我必须改变什么才能让它工作呢?

4

1 回答 1

4

Internet Explorer 对文件输入具有一定的安全性。您不能触发对文件输入的点击。而且我认为您无法在文件输入上收听某些事件。

如果你想做这样的事情,你必须使用带有不可见文件输入的“技巧”。您在 img 上放置一个不可见的文件输入,当用户单击 img 时,他实际上是在输入文件中单击。但是你不能在 IE 上克隆文件输入,所以你必须把这个输入从 DOM 中分离出来,放到一个表单中,然后提交。

你可以检查: http: //fineuploader.com/ 我认为它可以做你想做的事。

于 2012-12-03T08:48:57.157 回答