從這裏看起來好像要通過將字符串傳遞給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);
};
};
你是什麼意思 「不工作」 嗎?你是否收到任何錯誤訊息? –
在Firefox中我得到NS_ERROR_XPC_BAD_CONVERT_JS:無法轉換JavaScript參數arg 0 [nsIDOMFileReader.readAsDataURL]。 – Sagarmichael
在safari我沒有得到任何 – Sagarmichael