检查c#

时间:2016-07-29 09:48:00

标签: c# asp.net file-upload

使用C#中的这个asp网页上传文件,我需要检查重复项。

我接受服务器上传的3个文件。

enter image description here

在服务器上传新的3个文件后,我尝试上传服务器上现有的3个文件。

对于服务器上存在的3个文件jpg,Label上的响应代码不正确,因为:

  

文件存在IMG0006A.jpg

而不是

  

文件存在IMG0002A.jpg,IMG0005A.jpg,IMG0006A.jpg

问题是什么?

为什么我在foreach的代码Label中输出仅用于最后一个现有文件?

我的代码如下,请提前感谢您的帮助。

if (File.Exists(theFileName))
{
    objDir = new DirectoryInfo(Server.MapPath("\\images\\));
    objFI = objDir.GetFiles("*.*");
    iFileCnt = 0;

    if (objFI.Length > 0)
    {
        foreach (FileInfo file in objFI)
        {
            if (file.Name.ToString() == Path.GetFileName(theFileName))
            {
                lblFileList.Text = "File exist " + Path.GetFileName(theFileName);
                iFileCnt += 1;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

除了乔纳森的回答。他正在检查一个文件名,即文件名。你应该循环遍历所有三个文件: 假设fileNames是三个文件名的列表。

int iFileCount = 0;
foreach (string fileName in fileNames)
{
    if (!System.IO.File.Exists(fileName)) continue;

    if(iFileCount <= 0)
    {
         lblFileList.Text = "File exist " + System.IO.Path.GetFileName(fileName);
    }
    else
    {
         lblFileList.Text += ", " + System.IO.Path.GetFileName(fileName);
    }
    ++iFileCount;
}

答案 1 :(得分:0)

尝试

        if (File.Exists(theFileName))
        {
            objDir = new DirectoryInfo(Server.MapPath("\\images\\));
            objFI = objDir.GetFiles("*.*");

            if (objFI.Length > 0)
            {
                foreach (FileInfo file in objFI)
                {
                    if (file.Name.ToString() == Path.GetFileName(theFileName))
                    {
                        if (iFileCnt == 0)
                        {
                            lblFileList.Text = "File exist " + Path.GetFileName(theFileName);
                        }
                        else
                        {
                            lblFileList.Text += ", " + Path.GetFileName(theFileName);

                        }
                        iFileCnt += 1;
                    }
                }
            }
        }

请注意,iFileCnt = 0需要先设置,否则每个新文件都为0 但是,如果我理解你正在做的事情,那么最好早点获取现有文件列表,而不是每次刷新它。您需要做的就是将每个成功的文件添加到FileInfo数组中,以确保列表完整。