2013-08-28 55 views
2

我想讀本地圖像文件到img元素。但readAsDataURL()似乎返回「未定義」。我究竟做錯了什麼?使用HTML5 FileReader讀取本地圖像文件到img

var input = $('.mapimage_input').get(0); 
console.log(input); // <input type="file" class="mapimage_input" accept="image/jpeg"> 
var file = input.files[0]; 
console.log(file); // File {webkitRelativePath: "", lastModifiedDate: Fri Mar 30 2012 12:32:03 GMT+0200, name: "avatar.jpg", type: "image/jpeg", size: 8724…} 
var fr = new FileReader(); 
var img = fr.readAsDataURL(file); 
console.log(img); // undefined 
$('.mapimage_layer').attr('src',img); 

回答

5

FileReader.readAsDataURL is asynchronous.

開始讀取指定BlobFile的內容。當讀取操作完成時,readyState將變爲DONE,並且將調用onloadend回調(如果有的話)。此時,result屬性包含代表文件數據的data: URL。

onloadend回調附加到閱讀器。

fr.onloadend = function() { 
    var img = fr.result;     
    console.log(img); 
    $('.mapimage_layer').attr('src',img); 
} 
+0

好吧,我該如何進行回調? –

+0

哦,我看到'onload',謝謝你。 –

+0

上面的代碼有一些錯誤,但是我明白了,會盡快回復 –

0

這對我很好!

function readURL(input) { 

    if (input.files && input.files[0]) { 
     var reader = new FileReader(); 

     reader.onload = function (e) { 
      jQuery('#target').attr('src', e.target.result); 

     } 

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

jQuery("#inputTypeFile").change(function(){ 
    readURL(this); 
}); 
+0

你好,歡迎來到StackOverflow。請嘗試添加一些解釋給答案。 – Chaithanya

相關問題