从这里看起来好像要通过将字符串传递给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