Не понятно, в каком виде у вас file. Если в таком же, как когда указываем файл через диалоговое окно, то попробуйте написать как-то так:
function readFile(file) {
var reader = new FileReader();
// нужно, что бы функция была вызвана в контексте file
// так что готовим ее прямо сейчас
reader.onload = (function (file) {
return function () {
// есть шанс, что содержимое здесь )
console.log(this);
console.log(arguments);
return this.result;
};
})(file);
reader.readAsText(file);
}
Вот рабочий пример с выбором и чтением файла через input
<input type="file" id="input">
// при выборе файла
document.getElementById('input').addEventListener('change', function (e) {
var file = e.target.files[0]; // первый элемент массива файлов
var reader = new FileReader();
// при успешном завершении операции чтения
reader.onload = (function (file) {
return function (e) {
var r = e.target;
// получаем содержимое файла, состояние чтения, ошибки(или null)
console.log(r.result, r.readyState, r.error);
};
})(file);
// получить содержимое как текст
reader.readAsText(file);
// или:
// readAsText, readAsArrayBuffer, readAsDataURL, readAsBinaryString
});
И еще немного инфы по reader. Прямиком из моего "файла с полезными штуковинами"
нужно боольше инфы// Конструктор
// -------------------------------------
FileReader FileReader();
// Свойства
// -------------------------------------
// DOMError представляет собой ошибку, происходящую при чтении файла.
FileReader.error // Read only
// Число обозначающее состояние объекта FileReader.
// Принимает одно из значений State constants.
FileReader.readyState // Read only
// Данные из файла. Значение свойства действительно только когда
// завершится операция чтения, причем формат данных зависит от способа,
// с помощью которого процесс был вызван.
FileReader.result // Read only
// Обработчики событий
// -------------------------------------
// Обработчик для события abort.
// Это событие срабатывает каждый раз, когда прерывается операция чтения.
FileReader.onabort
// Обработчик для события error.
// Это событие срабатывает каждый раз, когда при чтении возникает ошибка.
FileReader.onerror
// Обработчик для события load.
// Это событие срабатывает при каждом успешном завершении операции чтения.
FileReader.onload
// Обработчик для события loadstart.
// Это событие срабатывает каждый раз, при запуске процесса чтения.
FileReader.onloadstart
// Обработчик для события loadend.
// Это событие срабатывает каждый раз по окончании процесса чтения
// (не важно, успешном или нет).
FileReader.onloadend
// Обработчик для события progress.
// Это событие срабатывает во время чтения данных из Blob.
FileReader.onprogress
// Методы
// -------------------------------------
// Запускает процесс чтения данных указанного Blob,
// по завершении, аттрибут result будет содержать данные файла в виде ArrayBuffer.
FileReader.readAsArrayBuffer()
// Запускает процесс чтения данных указанного Blob,
// по завершении, аттрибут result будет содержать бинарные данные файла в виде строки.
FileReader.readAsBinaryString()
// Запускает процесс чтения данных указанного Blob,
// по завершении, аттрибут result будет содержать данные файла в виде data: URL.
FileReader.readAsDataURL()
// Запускает процесс чтения данных указанного Blob,
// по завершении, аттрибут result будет содержать данные файла в виде текста.
FileReader.readAsText()
// Отмена операции чтения. После вызова, значение readyState станет равным DONE.
FileReader.abort()