正在检查多个文件的文件扩展名

本文关键字:文件 扩展名 检查 | 更新日期: 2023-09-27 18:28:55

我试图将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")
                    {

正在检查多个文件的文件扩展名

您可以使用非常有用的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
}

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;
}

我真的希望下面的第一行在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
    }
}