2013-01-16 29 views
0

我想從我的計算機上的文件中讀取文件並將其存儲在變量中。 我目前正在嘗試:從url或文件系統讀取文件到javascript中的變量

var fr = new FileReader; 

fr.onload = function() { 

    //variable to hold file 
    var data = fr.result; 

    var c=document.getElementById("cvs"); 
    var ctx=c.getContext("2d"); 
    ctx.drawImage(img,0,0,200,180); 
}; 

fr.readAsDataURL("encryptedImage"); 

這是行不通的。我需要這樣做,我可以解密我的文件系統上的加密圖像。我已經關閉了安全性,因此我的文件系統可以從瀏覽器中讀取。

什麼想法?

+0

你是什麼意思 「不工作」 嗎?你是否收到任何錯誤訊息? –

+0

在Firefox中我得到NS_ERROR_XPC_BAD_CONVERT_JS:無法轉換JavaScript參數arg 0 [nsIDOMFileReader.readAsDataURL]。 – Sagarmichael

+0

在safari我沒有得到任何 – Sagarmichael

回答

0

從這裏看起來好像要通過將字符串傳遞給readAsArrayBuffer()來加載本地文件,但它需要一個blob或文件對象。該文件可以通過瀏覽器文件對話框加載。 步驟如下:選擇文件,通過fileReader asArrayBuffer或asDataURL或asBinaryString加載文件...並在代碼中操作或使用數據。

對於這個例子,它從本地文件創建一個圖像並將其繪製到畫布上(如果它是正確的mime類型「image。*」的話)。

我不知道你想應用什麼樣的編碼/解碼。但對於數據的自定義操作,我會推薦使用ArrayBuffers和TypeArrays。

與FileReader.readAsDataURL()的例子:http://jsfiddle.net/uvmD7/

<body> 
    <canvas id="cvs" width="200" height="200"></canvas> 
    <input type="file" id="files" name="files[]" multiple /> 
</body> 

和腳本:

document.getElementById('files').addEventListener('change', handleFileSelect, false); 

var fr = new FileReader(); 

function handleFileSelect(evt) { 
    var files = evt.target.files; 
    fr.readAsDataURL(files[0]); 
}; 

fr.onload = function(evt) { 
    // do sth with it 
    var data = evt.target.result; //fr.result 
    img = new Image(); 
    img.src = data; 
    // draw after load 
    img.onload = function() { 
     var c=document.getElementById("cvs"); 
     var ctx=c.getContext("2d"); 
     ctx.drawImage(img,0,0,200,180);  
    }; 
}; 
相關問題