从文件输入加载数据时替代base64

时间:2014-10-09 21:41:11

标签: javascript fileapi

我目前正在使用HTML5文件输入法读取文件。

当文件加载后,我抓住它src(在我将其定义为Image之后)并将该src直接放入background-image的{​​{1}}属性中

我记录了src,它似乎是 Base64字符串。

不幸的是,在Android手机上将文件编码为base64和内存不足(导致浏览器挂起)。

  

读取文件时是否可以不将其编码为Base64   使用另一种更有效的内存方式显示它?


这是我目前使用的:

div.

1 个答案:

答案 0 :(得分:2)

使用window.URL创建对象URL而不是dataURL:

function handleFileSelect(evt) {
        var files = evt.target.files; // FileList object

        // Loop through the FileList and render image files as thumbnails.
        for (var i = 0, f; f = files[i]; i++) {

            // Only process image files.
            if (!f.type.match('image.*')) {
                $("#alertBox").show();
                $("#alertBox").html("Oops! The link is NOT a valid image");
                window.setTimeout(function () {
                    $("#alertBox").hide()
                }, 3000);
                continue;
            }
            var uploadedImg = new Image();
            uploadedImg.onload = function () {
               changeSelectedImg(uploadedImg.src);
               proceedToView("2") ;
            };//end onload
            uploadedImg.src = URL.creatObjectURL(f);
        }//next
}

只要浏览器支持window.URL:http://caniuse.com/#search=url

,这比基于FileReader的例程运行得更快,看起来更干净