使用JavaScript中的新File API,您可以读取Javascript中的文件以创建dataURL以向客户端显示客户端图片。我想知道是否可以在FileReader的onload回调中访问File对象。 我将说明用一个例子:HTML5文件API:在FileReader中获取File对象回调
var div = document.createElement('div'); div.ondrop = function(e) { e.preventDefault(); e.stopPropagation(); var files = e.dataTransfer.files; for (var i=0; i<files.length; i++) { var file = files[i]; // this is the file I want!! var filereader = new FileReader(); filereader.onload = function(e) { this; // the FileReader object e.target; // the same FileReader object this.result; // the dataURL, something like data:image/jpeg;base64,..... var img = document.createElement('img'); img.src = this.result; img.title = file.fileName; // This won't be working document.appendChild(img); } } return false; }
我能做的 - 什么我现在做的 - 是包裹的内容for循环的功能,并执行它来创建一个新的范围并保持文件在这样的范围内如此:
for (var i=0; i<files.length; i++) { var _file = files[i]; // this is the file I want!! (function(file) { // do FileReader stuff here })(_file); }
我只是想知道...也许我失去了一些东西。有没有办法从FileReader的onload函数中获取File对象? this
和e.target
都是FileReader对象而不是文件。 this
或e
是否有文件?我无法找到它:(
多谢
PS小提琴:。http://jsfiddle.net/rudiedirkx/ZWMRd/1/
这就是我现在使用的(并且已经使用了一段时间):http://js1.hotblocks.nl - javascript:http://js1.hotblocks.nl/tests/ajax/fdd.js - 仍然在我的答案中使用代码。它的工作原理。没有(丑陋)封闭。 (它是用`//`注释的。) – Rudie 2011-04-27 20:11:24