Comment restreindre les types de fichiers dans FileUpload dans MVC3?
J'ai un fileupload fonction où les utilisateurs peuvent télécharger des fichiers. Je veux empêcher les utilisateurs de télécharger certains types de fichiers. Les types autorisés sont: .doc,.xlsx,.txt,.jpeg.
Comment je peux faire cela?
C'est mon code de chargement de fichier:
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);
}
Vous devez vous connecter pour publier un commentaire.
La première chose à vérifier est de savoir si l'extension de fichier contenus dans
file1.FileName
correspond à l'une des extensions autorisées. Alors si vous voulez vraiment vous assurer que l'utilisateur n'a pas été renommé un autre type de fichier à l'extension que vous aurez besoin de regarder dans le contenu d'un fichier à reconnaître si c'est un de ces types.Voici un exemple comment vérifier si l'extension de fichier appartient à une liste prédéfinie extensions:
Utilisation Dans Le Modèle
Vous pouvez utiliser le
ContentType
propriété de laHttpPostedFileBase
pour vérifier le type de fichier (type mime): Voir MSDN sur le Content-Type de la propriété iciIci est une façon de le faire:
etc..
Cependant, pour un approfondissement de l'inspection, vous devrez inspecter le contenu du fichier. Il est facile de changer une extension de fichier..