Как получить имя файла из Javascript FileReader?
Я использую Javascript FileReader для загрузки изображения в браузере:
e = e.originalEvent;
e.dataTransfer.dropEffect = 'copy';
this.documentFile = e.dataTransfer.files[0];
var reader = new FileReader();
reader.onloadend = function () {
if (reader.result) {
console.log(reader);
$('#theImage').attr('src', reader.result);
}
};
reader.readAsDataURL(this.documentFile);
Это прекрасно работает. Теперь я хочу получить исходное имя файла, но я понятия не имею, как и смотреть в Интернете, я тоже ничего не могу найти?
Кто-нибудь знает, как я могу получить имя файла через FileReader? Все советы приветствуются!
Ответы
Ответ 1
Это не самое лучшее решение, но это сработало для меня.
var reader = new FileReader();
reader.fileName = file.name // file came from a input file element. file = el.files[0];
reader.onload = function(readerEvt) {
console.log(readerEvt.target.fileName);
};
Не лучший ответ, но рабочий.
Ответ 2
Я получил имя файла и размер файла через FileReader таким образом
Прежде всего, читатель - это спецификация JavaScript API FILE, которая так полезна для чтения файлов с диска.
В вашем примере файл читается readAsDataURL.
reader.readAsDataURL(this.documentFile);
var name = this.documentFile.name;
var size = this.documentFile.size;
Я попробовал на своем сайте использовать вместо этого this.files [0] и отлично работал, чтобы поймать имя и размер с помощью jQuery в элемент ввода.
reader.readAsDataURL(this.files[0]);
$("#nombre").val(this.files[0].name);
$("#tamano").val(this.files[0].size);
Ответ 3
Если вы хотите, чтобы имя файла было переменной:
var filename;
var reader = new FileReader();
reader.onloadend = function () {
if (reader.result) {
console.log(reader);
$('#theImage').attr('src', reader.result);
filename = reader.result;
}
};
reader.readAsDataURL(this.documentFile);
Если вы хотите, чтобы он выполнялся в функции:
var reader = new FileReader();
reader.onloadend = function () {
if (reader.result) {
console.log(reader);
$('#theImage').attr('src', reader.result);
myfunctionafter(reader.result);
}
};
reader.readAsDataURL(this.documentFile);
Если вы хотите получить информацию внутри другой функции:
var reader = new FileReader();
var filename = reader.onloadend = function () {
if (reader.result) {
console.log(reader);
$('#theImage').attr('src', reader.result);
return reader.result;
}
};
reader.readAsDataURL(this.documentFile);
Может возникнуть проблема, когда ваш reader.onloadend может завершиться до функции, из которой вы ее запускаете. Затем вы должны выполнить две функции и запустить myfunctionafter (reader.result); изнутри
Или вы можете просто получить src после
var filename = $('#theImage').attr('src');