Как ограничить файлы UTF-8, закодированными только при угловой загрузке файлов? - PullRequest
0 голосов
/ 24 сентября 2018

Я использую ng-file-upload для загрузки текстового файла.

<span type="file" class="btn" ngf-select ng-model="fileUser" name="fileUser" ngf-pattern="'.txt,.TXT'" ngf-accept="'text/plain'"> Select File </span>

Есть ли способ принять только кодированный файл UTF-8 и отклонить любой другой тип кодировки?

1 Ответ

0 голосов
/ 24 сентября 2018

Он изначально не поддерживается в ng-file-upload, но вы можете создать его самостоятельно.Подключитесь к ngf-change таким образом:

ngf-change="checkEncoding($files, $file, $newFiles, $duplicateFiles, $invalidFiles, $event)" 

Включите encoding.js в ваше приложение.Когда пользователь выбирает файл .txt, загрузите содержимое файла с помощью FileReader и используйте encoding.js для проверки кодировки:

$scope.checkEncoding = function(files, file, newFiles, duplicateFiles, invalidFiles, event) {
  if (!event.target.files) return
  var testFile = event.target.files[0];
  var reader = new FileReader();
  reader.onload = function(e) {
    var content = new Uint8Array(e.target.result);
    var encoding = Encoding.detect(content);
    if (encoding != 'UTF8') {
      //alert to the user, reset the file ng-model whatever ...
    }
  }
  reader.readAsArrayBuffer(testFile)
}

Вот рабочий план -> http://plnkr.co/edit/1UM9NDpNgRbJ13R67xuf?p=preview

...