2016-01-05 75 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 
    } 
}