Как ограничить загрузку файлов с несколькими расширениями - PullRequest
0 голосов
/ 31 октября 2018

Я использую Kendo Uploader для загрузки файлов в свое приложение. Я позаботился о том, чтобы разрешить загрузку только расширений, определенных в моей конфигурации, или показать сообщение об ошибке. Мой код выглядит примерно так

var validExtensions = [".pdf", ".doc", ".docx", ".pptx", ".xls", ".xlsx", ".txt"];

$('#uploader').kendoUpload({
  multiple: false,
  select: function (e) {
    if (validExtensions.indexOf(e.files[0].extension.toLowerCase()) <= -1) {
      alert("File type not allowed!");
      e.preventDefault();
      return false;
    }
  }
});

Это прекрасно работает для приема файлов только с указанными расширениями. Но есть проблема, поднятая командой безопасности, которая оценивает, чтобы не допустить загрузки файлов с несколькими расширениями (например, fileName.msi.txt или fileName.exe.doc).

Я знаю, что мы можем разделить на основе. и оценить, но я хотел бы знать, если у нас есть более чистый способ достичь этого?

Спасибо

1 Ответ

0 голосов
/ 31 октября 2018

К сожалению, вы не можете определить допустимые файлы только по их названию. Имена файлов могут называться как угодно, поэтому нет фильтрации, которую нельзя обойти с помощью быстрого переименования.

Если вы используете HTML 5, вы можете получить доступ к MIME-типу выбранного <input type="file"> элемента.

Например:

<input type="file" onchange="handleFiles(this.files)">
<script>
function handleFiles(files) {
    var selectedFile = files[0];

    console.log(
        "The selected file has the name "
        + selectedFile.name
        + " and is of the type "
        + selectedFile.type + "."
    );
}
</script>

Он не распознает все в вашем списке, но вы можете убедиться, что, например, файлы PDF и .txt - это то, что они говорят.

...