使用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