如何限制具有多个扩展名的文件被上传

时间:2018-10-31 12:03:13

标签: javascript jquery kendo-ui kendo-upload

我正在使用Kendo上传器将文件上传到我的应用程序中。我已确保只允许在配置中定义的扩展名被上传或显示错误消息。我的代码看起来像这样

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.txtfileName.exe.doc)。

我知道我们可以基于进行拆分。并进行评估,但我想知道是否有更清洁的方法来实现这一目标?

谢谢

1 个答案:

答案 0 :(得分:1)

不幸的是,您不能仅根据文件名来确定有效文件。文件名可以随心所欲地命名,因此没有可以快速重命名的过滤功能。

但是,如果您使用的是HTML 5,则可以access the MIME type的所选<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文件就是它们所说的。