当前位置:  开发笔记 > 编程语言 > 正文

如何验证文件上载的文件类型?

如何解决《如何验证文件上载的文件类型?》经验,为你挑选了4个好方法。

用来在ASP.NET应用程序中上传文件.我想限制上传的文件类型(例如:限制为.xls或.xlsx文件扩展名).

JavaScript或服务器端验证都可以(只要服务器端验证将在文件上传之前进行 - 可能会上传一些非常大的文件,因此需要在上载实际文件之前进行任何验证) .



1> 小智..:

似乎您将拥有有限的选项,因为您希望在上传之前进行检查.我认为你将获得的最好的是使用javascript来验证文件的扩展名.您可以构建有效扩展的哈希,然后查看正在上载的文件的扩展名是否存在于哈希中.

HTML:



使用Javascript:

var hash = {
  'xls'  : 1,
  'xlsx' : 1,
};

function check_extension(filename,submitId) {
      var re = /\..+$/;
      var ext = filename.match(re);
      var submitEl = document.getElementById(submitId);
      if (hash[ext]) {
        submitEl.disabled = false;
        return true;
      } else {
        alert("Invalid filename, please select another file");
        submitEl.disabled = true;

        return false;
      }
}


别忘了,这只是客户端验证.我仍然可以"手动"HTTP-POST到表单URL以绕过此检查 - 您还需要进行服务器端验证检查.
我在上面使用但得到了文件的扩展名:'var ext = value.slice(value.lastIndexOf(".")).toLowerCase();'
当文件名包含extra.时,这将返回false,例如my.file.doc

2> shailesh..:

使用regularre表达式验证器非常简单.

 

客户端验证允许上载的文件类型



3> 小智..:

从javascript,您应该能够在onsubmit处理程序中获取文件名.所以在你的情况下,你应该做的事情如下:

...



4> kd7..:

我同意Chris的意见,检查扩展名是不是以任何方式验证文件类型.Telerik的radUpload可能是您的最佳选择,它提供了正在上传的文件的ContentType属性,您可以将其与已知的mime类型进行比较.你应该检查:

应用/ vnd.ms-Excel中,

应用程序/ Excel中,

应用程序/ x-msexcel的

对于新的2k7格式:

应用程序/ vnd.openxmlformatsofficedocument.spreadsheetml.sheet

Telerik曾经将radUpload作为一个单独的组件出售,但现在它被包装到控件套件中,这使得它更贵一点,但到目前为止它是检查真实类型的最简单方法

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有