我用<input type="file" id="fileUpload" runat="server">上传一个ASP文件.NET应用程序.我想限制上传的文件类型(例如:限制为.xls或.xlsx文件扩展名).

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

推荐答案

看起来你的 Select 有限,因为你希望在上传之前进行判断.我认为最好是使用javascript来验证文件的扩展名.您可以构建一个有效扩展名的散列,然后查看正在上载的文件的扩展名是否存在于散列中.

HTML:

<input type="file" name="FILENAME"  size="20" onchange="check_extension(this.value,"upload");"/>
<input type="submit" id="upload" name="upload" value="Attach" disabled="disabled" />

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;
      }
}

Asp.net相关问答推荐

ASP.NET MVC forEach 循环仅返回 1 个值

如何从 ASP.NET 中的代码隐藏文件访问 IFRAME?

ASP.NET 核心中的 Request.CreateResponse

格式化 DataBinder.Eval 数据

SignalR 不在服务器上使用 Session

模型项的类型为 CookMeIndexViewModel,但需要类型为 IEnumerable 的模型项

Web api 不支持 POST 方法

如何使用文件上传控件 Select 多个文件?

c# - 如何从列表中获取值的总和?

从 RowDataBound 事件的 gridview 从单元格中获取值

ASP.NET MVC 5 中的路由可选参数

aspx 文件中的 if 语句

错误:无法在 Web 服务器上开始调试... ASP.NET 4.0

页面在谷歌浏览器中加载两次

如何在 ASP.NET 页面中以编程方式生成 401 错误

ASP.net 中是否有 after Page_Load 事件

ASP.NET MVC Url Route 支持(点)

如何进入 IIS 管理器?

将Bundle 包添加到现有的 ASP.NET Webforms 解决方案

重新生成designer.cs