Как ограничить загрузку файлов с несколькими расширениями

Я использую 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 ответ

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

Если вы используете 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 - это то, что они говорят.

Другие вопросы по тегам