首页 / 知识
关于asp.net:如何验证文件上传的文件类型?
2023-04-15 21:49:00

How do I Validate the File Type of a File Upload?
我正在使用 JavaScript或服务器端验证都是可以的(只要服务器端验证将在文件上传之前进行-可能会上传一些非常大的文件,因此任何验证都需要在实际文件上传之前进行) 。 似乎您选择的选项有限,因为您希望在上传之前进行检查。我认为最好的方法是使用javascript验证文件的扩展名。您可以构建有效扩展名的哈希,然后查看哈希中是否存在要上传的文件的扩展名。 HTML:
Javascript:
使用正则表达式验证器非常简单。
允许上传的文件类型的客户端验证 我同意Chris的看法,无论您怎么看,检查扩展名都不是对文件类型的验证。 Telerik的radUpload可能是您最好的选择,它提供了要上传文件的ContentType属性,您可以将其与已知的mime类型进行比较。您应该检查: application / vnd.ms-excel, 应用程序/ excel 应用程序/ x-msexcel 对于新的2k7格式: application / vnd.openxmlformatsofficedocument.spreadsheetml.sheet Telerik以前将radUpload作为一个单独的组件出售,但是现在将其包装到控件套件中,这使其价格更高一些,但到目前为止,这是检查真实类型的最简单方法 从javascript,您应该能够在onsubmit处理程序中获取文件名。因此,在您的情况下,您应该执行以下操作:
您可以在上传控件上使用正则表达式验证器:
输入标签还具有accept属性:
但是当我尝试此操作时(使用FF3和IE7)并没有太大的成功 根据kd7的建议您检查文件内容类型的答复,这是一个包装方法:
如果要上传的文件是.xls或.xlsx,则返回true 正如某些人所提到的,JavaScript是必经之路。请记住,此处的"验证"仅是文件扩展名,它不会验证文件是否是真正的Excel电子表格! 确保始终在服务器端检查文件扩展名,以确保没有人可以上载.aspx,.asp等恶意文件。 作为一种替代选择,您是否可以使用HTML File Input的" accept"属性来定义可接受的MIME类型。 这里的定义 避免使用标准的Asp.Net控件,而使用Brettle Development的NeadUpload组件:http://www.brettle.com/neatupload 更快,更易于使用,无需担心配置文件中的maxRequestLength参数,并且非常易于集成。 我认为有不同的方法可以做到这一点。由于我不熟悉asp,因此我只能为您提供一些检查特定文件类型的提示: 1)安全的方法:获取有关您希望传递的文件类型的标头的更多信息。解析上传的文件并比较标题 2)快速方法:将文件名分为两部分->文件名和文件结尾。检查文件的结尾并将其与您要允许上传的文件类型进行比较 希望能帮助到你 :) 好吧-您将无法在服务器端执行回发操作,因为文件将在回发期间提交(上传)。 我认为您可以使用JavaScript在客户端上执行此操作。我个人使用的是Telerik的名为radUpload的第三方组件。它具有良好的客户端和服务器端API,并且为大文件上传提供了进度条。 我确定也有开源解决方案。 客户端验证检查:- HTML:
Javascript:
就像另一位受访者指出的那样,该文件类型可能是伪造的(例如,.exe重命名为.pdf),这不会阻止MIME类型的检查(即,如果将.exe重命名为,则该文件将显示MIME为" application / pdf")。 pdf)。我相信只能在服务器端完成对真实文件类型的检查。这里介绍了一种使用System.IO.BinaryReader进行检查的简单方法: http://forums.asp.net/post/2680667.aspx 和VB版本在这里: http://forums.asp.net/post/2681036.aspx 请注意,您需要知道要检查的文件类型的二进制"代码",但是可以通过实施此解决方案并调试代码来获取它们。 您唯一的选择似乎是客户端验证,因为服务器端意味着文件已经上传。同样,MIME类型通常由文件扩展名决定。 使用jQuery之类的JavaScript框架来重载表单的onsubmit事件。然后检查扩展名。这将限制大多数尝试。但是,如果有人将图像更改为扩展名XLS,那么您将遇到问题。 我不知道这是否适合您,但是在使用Silverlight或Flash之类的内容进行上传时,您拥有更多的客户端控制权。您可以考虑在上传过程中使用其中一种技术。 |
最新内容
相关内容
linux服务器上传命令?
linux服务器上传命令?,服务,软件,平台,数据,工具,系统,手机,电脑,设备,官网,从linux服务器中下载或上传文件您要问的是为什么linux服务器一直linux上上传命令行?
linux上上传命令行?,服务,密码,百度,工具,文件,系统,位置,工作,地址,官网,怎么通过linux命令把自己电脑上的文件上传到linxu服务器(不借助xftplinux上上传命令行?
linux上上传命令行?,服务,密码,百度,工具,文件,系统,位置,工作,地址,官网,怎么通过linux命令把自己电脑上的文件上传到linxu服务器(不借助xftplinux打包上传的命令?
linux打包上传的命令?,系统,工具,软件,时间,命令,文件,目录,终端,文档,示例,linux打包?1、打开终端并进入要打包的目录。使用cd命令切换到要打linux上传命令是什么?
linux上传命令是什么?,网站,环境,软件,服务,数据,项目,密码,电脑,工具,设备,Linux上传文件到服务器命令是什么呢1、ssh ssh username@remoteholinux验证分区命令?
linux验证分区命令?,系统,工具,情况,分区,命令,状态,网络,密码,检测,首次,在LINUX系统中,分区与格式化硬盘的命令是什么?1、fdisk/sfdisk:命令linux上传文档命令?
linux上传文档命令?,服务,工具,密码,系统,软件,工作,电脑,综合,命令,文件,Linux上传文件到服务器命令是什么呢1、ssh ssh username@remotehost上传的linux命令行?
上传的linux命令行?,系统,地址,管理,信息,时间,工作,百度,手机,密码,电脑,Linux命令行上传文件到百度网盘在下边图示位置粘贴授权码,耐心等待一linux批量上传命令?
linux批量上传命令?,管理,密码,数据,系统,工具,电脑,软件,设计,网站,标准,Python学生常用库1、五个常用python标准库:sys sys包被用于管理Pytholinux命令行上传文件?
linux命令行上传文件?,服务,软件,数据,系统,工具,官网,文件,服务器,命令,文件夹,如何将本地文件上传到linux1、linux虚拟机点击设置里边,选择“linux命令上传压缩包?
linux命令上传压缩包?,系统,工具,地址,管理,命令,文件,目录,文件名,下面,指令,linux下的gzip命令如何运用?1、linux中用gzip压缩目录步骤如下:linux命令和应用程序?
linux命令和应用程序?,软件,系统,环境,管理,基础,情况,位置,电脑,工具,中心,在linux下如何装应用程序?需要什么命令啊首先从官网下载hdf5,根据