Получить имя файла из файла типа ввода Angular2

Я хочу получить имя файла из моего тега ввода html в модальном представлении и сохранить его с помощью Angular2. Кто-нибудь может мне помочь?


person Sandro De Marco    schedule 27.02.2017    source источник


Ответы (6)


Вы можете сделать следующее:

HTML:

<input type="file" (change)="fileEvent($event)" />

Машинопись:

fileEvent(fileInput: Event){
    let file = fileInput.target.files[0];
    let fileName = file.name;
}
person Igor Janković    schedule 27.02.2017
comment
и как получить файл ext? - person Shreyas Pednekar; 14.08.2018
comment
Для тех, кто получает Property 'files' does not exist on type 'EventTarget', проверьте stackoverflow.com/a/44932086/4281182 - person Selçuk Cihan; 24.04.2019
comment
я получаю неопределенное имя файла. - person jukebox; 06.06.2019
comment
@SelçukCihan Спасибо, приятель. Ваш комментарий спас мне жизнь. - person James Rao; 19.07.2019

Можно попробовать более элегантный вариант:

HTML:

<input #file type="file" (change)="updateFile(file)">

Скрипт:

updateFile(file: HTMLInputElement) {
  let name = file.value;
}
person Sergey Dzyuba    schedule 26.12.2017

HTML

<button (click)="imgFileInput.click()">Add</button>
    {{ imgFileInput?.files[0]?.name }}
<input hidden type="file" #imgFileInput (change)="uploadSingle($event)"/>

Компонент

uploadSingle(event) {
  const fileName = event.target.files[0].name;
}
person Stepan Prokopiak    schedule 31.05.2018
comment
Пожалуйста, объясните свои строки кода, чтобы другие пользователи могли понять его функциональность. Спасибо! - person Ignacio Ara; 31.05.2018
comment
Это совершенно не нужно. Метка с атрибутом for выполнит эту работу, не перехватив ни одного клика. Также я не совсем уверен, что вы можете вызвать щелчок по скрытому элементу. - person Sampgun; 19.02.2019

HTML

<input type="file" (change)="onFileChange($event)">

Скрипт

onFileChange(event) {    
     let files = event.target.files[0].name;
}
person Vivek Singh    schedule 27.02.2017
comment
Как получить путь к файлу? - person Krishna Karki; 12.12.2017
comment
Вы можете', это функция безопасности в современных браузерах. это может помочь, developer.mozilla.org/en- США/документы/Интернет/HTML/Элемент/ввод/файл - person Vivek Singh; 12.12.2017

Эта работа формирует меня:

HTML

<input type="file" (change)="detectFiles($event)">
<div class="output">Seleccionado: {{ fileName }} </div>

ТС

selectedFiles: FileList;
fileName: string;

detectFiles(event) {
    this.selectedFiles = event.target.files;
    this.fileName = this.selectedFiles[0].name;
    console.log('selectedFiles: ' + this.fileName );
  }
person Alvargon    schedule 07.09.2018

Решение этой ссылки https://stackoverflow.com/a/44932086/4281182, предложенное @ Selçuk Cihan, не помогло, поэтому мой Обходной путь состоял в том, чтобы сделать тип параметра fileInput «любым», выполнив это

fileEvent(fileInput){
    let file = fileInput.target.files[0];
    let fileName = file.name;
}

поэтому во время выполнения TS это чистый код JS

В любом случае спасибо за это здорово, и это сэкономило мне много времени

person Mohammed Yousif    schedule 08.08.2019