2014-01-12 101 views
1

如果具有輸入類型的文件的FileReader readAsBinaryString()到圖像DOM元素

<input id="file" type="file" name="file" /> 

和如果一個文件被選擇我想從圖像的負載讀取的Exif數據的圖像

<img id="img"> 

它進入img標籤。

var $inputFile = $("#file"); 

$inputFile.on("change", function() { 
    var img = document.getElementById("img"); 
    var files = $inputFile[0].files; 

    var reader = new FileReader() 

    reader.onload = function(event) { 
     var file = reader.result; 

     // this is not working 
     img.src = file; 

     var binaryString = reader.result; 
     var oFile = new BinaryFile(binaryString, 0, file.size); 
     var exif = EXIF.readFromBinaryFile(oFile); 

     // read exif data 
    } 
    reader.readAsBinaryString(files[0]); 
}); 

問題是我沒有在屏幕上得到任何圖像。它只顯示如果我使用reader.readAsDataURL(文件[0]);但是我無法使用,因爲我需要binaryString作爲Exif數據。

如何獲取圖像標籤以顯示所選文件是二進制字符串?

回答

3

要以「二進制」形式顯示圖像,您需要將其作爲base62編碼的字符串,即「dataURL」。 要使用它的二進制文件,並把它作爲src你可以做一個ObjectURL

var objectURL = URL.createObjectURL(blob); 
image.src=objectURL; 

你並不需要這個的FileReader,但你需要的FileReader爲您EXIF分析

+0

我試圖img.src = URL.createObjectURL(文件);但它顯示一個錯誤:Uncaught TypeError:類型錯誤reader.onload – confile

+0

它接受一個File或Blob,而不是FileReader對象。請參閱文檔 – japrescott

+0

這不會幫助我如何獲取文件或blob? – confile