Разница в объекте файла между Firefox и Chrome

#html #angular #typescript #google-chrome

Вопрос:

Существует разница в объекте файла, полученном из одного и того же элемента ввода HTML, между Chrome и Firefox. Я использую Angular на переднем конце.

Мой элемент ввода HTML

<input type="file" accept=".csv" (change)=onSelectFile($event) />

Мой Код Машинописи

 onSelectFile(event: any) {
    event.preventDefault();
    const file = event.target.files[0];
    console.log(file)
}
 

Вывод вышеуказанного кода машинописи в Mozilla Firefox 89.0.1 (64-разрядная версия)

 File { name: "Facility (5).csv", lastModified: 1624430723623, webkitRelativePath: "", size: 125, type: "text/csv" }
 

Вывод того же кода машинописного текста в Google Chrome 91.0.4472 1.14 (Официальная сборка) (64-разрядная версия)

 File { name: "Facility (5).csv", lastModified: 1624430723623, webkitRelativePath: "", size: 125, , type: "", lastModifiedDate: Wed Jun 23 2021, 12:15:23 GMT 0530 (India Standard Time) }
 

Как видно из приведенных выше журналов консоли, объект File возвращает разные параметры в разных браузерах. Тип файла доступен в firefox как text/csv , но не в chrome.

У меня есть последующая логика, которая зависит от типа файла, введенного/импортированного здесь. Итак, мне нужно type , чтобы тип файла был в каждом браузере. Пожалуйста, помогите.

(Примечание: Я также хочу, чтобы эта работа работала в Safari, но еще не тестировал ее.)

Комментарии:

1. Я не могу повторить это в той же версии браузера Chrome. Выбор csv-файла дает application/vnd.ms-excel мне нужный тип. (И да, на самом деле это csv, а не xls(x).) jsfiddle.net/7vpLbhfq

2. @Ivar как вы думаете, может быть проблема с тем, как я сохраняю файл в Excel? Я выбрал обычный CSV (разделенный запятыми). Я знаю, что есть и другие варианты CSV. Должен ли я выбрать какой-либо из них? В каком из них вы его сохранили?

3. Я не уверен, что содержимое файла вообще имеет какое-либо влияние. Вы можете попробовать создать простой новый текстовый файл с содержимым 1,2,3,4,5 , сохранить его, а затем изменить расширение на .csv . Посмотрим, есть ли в этом какая-то разница.

4. Я только что понял, что забыл упомянуть, что именно так файл создается в первый раз. Затем я изменяю файл с помощью Excel, сохраняю и пытаюсь загрузить то же самое. Вот пример файла my-stackoverflow.s3.eu-central-1.amazonaws.com/Facility (5).csv . Итак, как вы думаете, я не должен создавать CSV таким образом?

5. И правильно ли указан тип исходного файла? Образец файла, который вы предоставили, дает мне тот же результат ( application/vnd.ms-excel ).