Как ограничить загрузку файлов с несколькими расширениями
Я использую 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 - это то, что они говорят.