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