2016-01-05 95 views
1

我試圖將5個文件名合併爲一個字符串,以檢查通過用戶上傳的文件的擴展名,並且只允許.jpg,.png和.jpeg,但我不確定我的方法是正確的特別部分:檢查多個文件的文件擴展名

string filess = "FileExtentio, FileExtentio2, FileExtentio3, FileExtentio4, FileExtentio5"; 

所以你能不能給我你的正確方法建議做代碼

if (FileUploadImg1.HasFile || FileUploadImg2.HasFile || FileUploadImg3.HasFile || FileUploadImg4.HasFile || FileUploadImg5.HasFile) 
       { 
        string FileExtentio = System.IO.Path.GetExtension(FileUploadImg1.FileName); 
        string FileExtentio2 = System.IO.Path.GetExtension(FileUploadImg2.FileName); 
        string FileExtentio3 = System.IO.Path.GetExtension(FileUploadImg3.FileName); 
        string FileExtentio4 = System.IO.Path.GetExtension(FileUploadImg4.FileName); 
        string FileExtentio5 = System.IO.Path.GetExtension(FileUploadImg5.FileName); 

        string filess = "FileExtentio, FileExtentio2, FileExtentio3, FileExtentio4, FileExtentio5"; 

        if (filess.ToLower() == ".jpeg" && filess.ToLower() == ".png" && filess.ToLower() == ".jpeg") 
        { 
+0

所以......是字符串'filess'用逗號或分居的擴展列表... –

+0

我只是想你在找什麼是字符串連接?例如。 'filess = FileExtentio +「,」+ FileExtentio2 +「,」+ ...'或'filess = string.Format(「{0},{1},...」,FileExtentio,FileExtentio2,...)或'filess = $「{FileExtentio},{FileExtentio2},...」' –

+0

@Isaiah泰勒是它的逗號分隔原來的一個是:var filess = new [] {FileExtentio,FileExtentio2,FileExtentio3,FileExtentio4,FileExtentio5} ;但多數民衆贊成沒有與第二行作爲var無法接受.ToLower所以我嘗試了很多修復,所以我決定從VAR轉換爲字符串,然後我可以得到TOLOWER,但我不知道我的方式是正確的,所以如果你有一個正確的方式來檢查文件的擴展名,並只允許三種圖像格式,那麼我會很感激 – samo

回答

0

您可以使用List<string>這非常有用。

List<string> fileExtentions = new List<string>(); 

if (FileUploadImg1.HasFile) 
    fileExtentions.Add(System.IO.Path.GetExtension(FileUploadImg1.FileName)); 

if (FileUploadImg2.HasFile) 
    fileExtentions.Add(System.IO.Path.GetExtension(FileUploadImg2.FileName)); 

if (FileUploadImg3.HasFile) 
    fileExtentions.Add(System.IO.Path.GetExtension(FileUploadImg3.FileName)); 

if (FileUploadImg4.HasFile) 
    fileExtentions.Add(System.IO.Path.GetExtension(FileUploadImg4.FileName)); 

if (FileUploadImg5.HasFile) 
    fileExtentions.Add(System.IO.Path.GetExtension(FileUploadImg5.FileName)); 

if(fileExtentions.Any(f=>!f.Equals(".jpg", StringComparison.OrdinalIgnoreCase) && 
         !f.Equals(".jpeg", StringComparison.OrdinalIgnoreCase) && 
         !f.Equals(".png", StringComparison.OrdinalIgnoreCase)) 
{ 
    //Invalid file format detected 
} 
0

以上的string FileExtensio東西你的代碼塊的這部分,添加此:

string isValid = 'true'; 

然後,對每個那些喜歡

string FileExtentio = System.IO.Path.GetExtension(FileUploadImg1.FileName); 

變化

string FileExtentioTemp = System.IO.Path.GetExtension(FileUploadImg1.FileName); 
string FileExtentio = FileExtentioTemp == 'jpg' || FileExtenioTemp == 'png' || FileExtentioTemp == 'jpeg' ? FileExtentio : isValid = false; 

然後,你的病情線,只是說

if(isValid == 'true'){ 
    doStuff; 
} 
0

我真的希望下面的第一行可能在asp中。這個解決方案會讓你有機會以不同的方式處理每個文件,並且看起來在我看來有點乾淨。

var fileUploads = new List<FileUpload> 
         { 
          FileUploadImg1, 
          FileUploadImg2, 
          FileUploadImg3, 
          FileUploadImg4, 
          FileUploadImg5, 
         }; 

var allowedExtensions = new List<string>{ ".jpg", ".jpeg", ".png" }; 

foreach(FileUpload fileUpload in fileUploads) 
{ 
    if(!fileUpload.HasFile) 
    { 
     continue; 
    } 

    if(allowedExtensions.Contains(System.IO.Path.GetExtension(fileUpload.FileName))) 
    { 
     // do stuff with valid file 
    } 
    else 
    { 
     // do stuff with invalid file 
    } 
}