2016-01-05 3 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

@ Исаия Тейлор да его разделение запятыми: var filess = new [] {FileExtentio, FileExtentio2, FileExtentio3, FileExtentio4, FileExtentio5} ; но thats не работает со второй строкой, так как var can not принимает .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 
    } 
} 
Смежные вопросы