我有一个文件上传功能,用户可以上传文件.我想限制用户上传某些文件类型.允许的类型是:.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 }