формат файла, не распознающий json и geojson - PullRequest
0 голосов
/ 30 мая 2018

Я использую Filereader в Angular 2. Я знаю, что к формату файла можно получить доступ через:

 file.type

, когда я загружаю, например, txt, тип: text / plain.Но когда я загружаю json или geojson, возвращаемое значение становится пустым.

есть ли надежный способ доступа к типам, когда его json или geojson?

1 Ответ

0 голосов
/ 30 мая 2018

Единственный надежный способ узнать, является ли это json или нет, это проверить содержимое.Смысл запустить его через JSON.parse().Если он выбрасывает исключение, это не json (или искаженный json).

try {
  JSON.parse(fileContents);
} catch(e){
  console.log("Not a json file or file containing malformed json");
}

Типы пантомимы не хранятся в файлах как часть данных.Обычно это определяется расширением, магическим числом (двоичный заголовок) и т. Д. И в зависимости от реализации браузер, скорее всего, просто собирается взглянуть на расширение и использовать некоторую таблицу поиска.Казалось бы, в используемом вами браузере не было одного набора для .json файла

Например, при загрузке файла .json в приведенной ниже демонстрации в Chrome будет отображаться application/json.Если изменить его на .txt, он будет выглядеть как text/plain.Изменение его на какое-то другое расширение изменит его снова.

document.querySelector('input').addEventListener('change',function (){
  document.body.insertAdjacentHTML('beforeend',this.files[0].type+"<br>");
});
<input type="file" /><br>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...