1

我正在使用 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)不应该被允许。

我知道我们可以根据 . 并评估,但我想知道我们是否有更清洁的方法来实现这一目标?

谢谢

4

1 回答 1

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 文件就是他们所说的那样。

于 2018-10-31T12:32:36.120 回答