asp.net-mvc-3 - 如何在MVC3中限制FileUpload中的文件类型?

标签 asp.net-mvc-3 file-upload

我有一个文件上传功能,用户可以上传文件。我想限制用户上传某些文件类型。允许的类型是: .doc、.xlsx、.txt、.jpeg .

我怎么能做到这一点?

这是我的实际文件上传代码:

      public ActionResult UploadFile(string AttachmentName, BugModel model)
       {            
        BugModel bug = null;
        if (Session["CaptureData"] == null)
        {
            bug = model;
        }
        else
        {
            bug = (BugModel)Session["CaptureData"];
        }
        foreach (string inputTagName in Request.Files)
        {
            HttpPostedFileBase file1 = Request.Files[inputTagName];
            if (file1.ContentLength > 0)
            {
                string path = "/Content/UploadedFiles/" + Path.GetFileName(file1.FileName);
                string savedFileName = Path.Combine(Server.MapPath("~" + path));
                file1.SaveAs(savedFileName);
                BugAttachment attachment = new BugAttachment();
                attachment.FileName = "~" + path.ToString();
                attachment.AttachmentName = AttachmentName;
                attachment.AttachmentUrl = attachment.FileName;
                bug.ListFile.Add(attachment);
                model = bug;
                Session["CaptureData"] = model;
            }
        }
        ModelState.Clear();
        return View("LoadBug", bug);
    }

最佳答案

首先要验证的是file1.FileName中包含的文件扩展名是否匹配允许的扩展名之一。然后,如果您真的想确保用户没有将其他文件类型重命名为允许的扩展名,则需要查看文件的内容以识别它是否是允许的类型之一。

以下是如何检查文件扩展名是否属于预定义扩展名列表的示例:

var allowedExtensions = new[] { ".doc", ".xlsx", ".txt", ".jpeg" };
var extension = Path.GetExtension(file1.FileName);
if (!allowedExtensions.Contains(extension))
{
    // Not allowed
}

关于asp.net-mvc-3 - 如何在MVC3中限制FileUpload中的文件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12086183/

相关文章:

mysql - 复杂日期查询SQL

jquery - 如果用户单击 "Cancel"按钮,Ajax.Actionlink OnBegin 确认不会阻止调用 ajax 调用

jQuery Validate Unobtrusive 不适用于 TextArea

c# - 使用 Twitter Bootstrap、C#、asp.net 和 javascript 上传文件

php - 在 PHP 中将原始名称的文件存储在服务器上是否安全?

c# - 如何覆盖 session 属性?

jQuery 文件上传 blueimpl 浏览器卡住

java - 安卓内存问题

php - 为什么我使用 PHP 上传的图片没有正确存储在 longblob 中

asp.net-mvc - 动态加载局部 View