2015-09-23 72 views
0

我在我的一個控制器中的上傳方法在我的ASP.net項目中工作完美,但我將如何添加限制到文件類型; jpeg,jpg,png和bmp。ASP.net MVC限制上傳文件

我在網上無處不在,有很多解決方案,但他們都沒有爲我工作。

這裏是我的代碼

public ActionResult Create([Bind(Include = "Id,Title,Description,FileName,FileType,FileSize,Author,DateUploaded")] FileSharing fileSharing) 
    { 

     if (Request.Files.Count > 0) 
     { 
      if (ModelState.IsValid) 
      { 
       HttpPostedFileBase file = Request.Files.Get(0); 
       string fileName = Path.GetFileName(file.FileName); 
       string filePath = Path.Combine(Server.MapPath("~/Assets/"), fileName); 
       file.SaveAs(filePath); 

       FileInfo fileInfo = new FileInfo(filePath); 
       fileSharing.FileType = fileInfo.Extension.Remove(0, 1).ToUpper(); 
       fileSharing.DateUploaded = DateTime.Now; 
       fileSharing.FileName = fileName; 
       fileSharing.FileSize = fileInfo.Length.ToString(); 
       fileSharing.Author = User.Identity.Name; 

       db.FileSharing.Add(fileSharing); 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      }   
     } 
     return View(fileSharing); 
    } 

回答

1

您可以通過

HttpPostedFileBase file = Request.Files.Get(0); 
var allowedExtensions = new string[]{".jpeg", ".png"}; 
string extension = Path.GetExtension(file.FileName); 
if(allowedExtensions.Contains(extension)) 
{ 
//file allowed 
} 
else 
{ 
//invalid extension 
} 
+1

非常感謝。 – Justin

0

獲取擴展如下

var FileExtension = Path.GetExtension(fileName).ToLower(); 

而之前file.SaveAs(filePath);

if(FileExtension == ".jpg" || FileExtension == ".bmp" |....) 

它與你想要的格式比較那麼只有保存。

+1

謝謝你這麼多檢查文件exenstions。 – Justin

+0

如果它解決了你的問題,那麼接受的答案將是appriciated – Imad