-1

我想从客户端计算机上传一张图片。

我这样做如下。一切都很好,但是这段代码不适用于 IE9(和一些以前的版本):

代码(Javascript):

function readURL(input, image_id) {
'use strict';
if (input.files && input.files[0]) {
    var reader = new FileReader();

    reader.onload = function (e) {
        $("#" + image_id).width("auto");
        $("#" + image_id).height("auto");
        s = input.files[0].name;
        $("#" + image_id).attr('src', e.target.result);
    };

    reader.readAsDataURL(input.files[0]);
}

和 HTML 代码:

                <div id = "id_divpic">
                    <div class="myfileupload-buttonbar">
                        <label class="myui-button">
                            <span>Your picture</span>
                            <form>
                                <input type="file" name="video" accept="image/jpg,image/gif,image/bmp,image/jpeg,image/xbm" id = "id_filepic" onchange="readURL(this, 'id_image');" />
                            </form>
                        </label>
                    </div>
                    <div id = "id_picture">
                        <div id="id_imgInner">
                            <div id="id_imgBack"></div>
                            <img id="id_image" src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs%3D" onmousedown="return false" alt="Your picture"/>
                        </div>
                    </div>
                                        </div>

代码有什么问题,它在 IE8,9 上不起作用?

为了代码运行,我该怎么做?

谢谢 :)

4

2 回答 2

1

对于 IE,该FileReaderAPI 仅在 Internet Explorer 10 中受支持。对于 IE 8 和 9,另一种方法是 ActiveX FileSystemObject

请参阅IE 和本地文件读取

于 2013-06-01T18:28:19.393 回答
0

在 IE8 上,我使用过滤器 AlphaImageLoader (css)。

查看详情: http: //msdn.microsoft.com/en-us/library/ms532969 (v=vs.85).aspx

// #id 图像 - 标签。

// #id_filepic - 标签

   $("#id_image").css("filter", 
    "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=myscale)"); 
// for declaring.

   document.getElementById("id_image").filters.item(
      "DXImageTransform.Microsoft.AlphaImageLoader").src = 
        document.getElementById("id_filepic").value;

请注意,在设置图像时,您可以延迟恢复图像大小(尤其是当宽度 > 高度时),因此为了获得正确的大小,您应该放置这样的内容。

setTimeout(function () {
            // get size.
        }, 1000);

这就是我的问题。

不管怎么说,还是要谢谢你。

于 2013-06-14T03:50:25.530 回答