Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c中上载时检查现有文件的输出不正确#_C#_Asp.net_File Upload - Fatal编程技术网

C# c中上载时检查现有文件的输出不正确#

C# c中上载时检查现有文件的输出不正确#,c#,asp.net,file-upload,C#,Asp.net,File Upload,有了这个asp网页上传文件的C#我需要检查副本 我在服务器上接受3个上传文件 在将新的3个文件上载到服务器上之后,我尝试上载与服务器上现有的3个文件相同的文件 对于服务器上存在的3个jpg文件,标签上的响应代码不正确,因为: 文件存在IMG0006A.jpg 而不是 文件存在IMG0002A.jpg、IMG0005A.jpg、IMG0006A.jpg 有什么问题吗 为什么如果在代码foreachinLabel中有,则输出仅针对最后一个现有文件 我的代码如下,提前感谢您的帮助 if (File.

有了这个asp网页上传文件的C#我需要检查副本

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

在将新的3个文件上载到服务器上之后,我尝试上载与服务器上现有的3个文件相同的文件

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

文件存在IMG0006A.jpg

而不是

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

有什么问题吗

为什么如果在代码
foreach
in
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;
            }
        }
    }
}
试一试

请注意,iFileCnt=0需要提前设置,否则对于每个新文件,它都是0。

但是,如果我理解您所做的是正确的,那么最好尽早获取现有文件列表,而不是每次都刷新它。您只需将每个成功的文件添加到FileInfo数组中,以确保列表完整

除了乔纳森的回答。他只检查一个文件名,即文件名。您应该循环浏览所有三个文件: 假设文件名是三个文件名的列表

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;
}
int-iFileCount=0;
foreach(文件名中的字符串文件名)
{
如果(!System.IO.File.Exists(fileName))继续;

如果(如果算上你没有在标签上添加文本。你在每次迭代中都会设置它。@J.Steen谢谢你,很抱歉,但我不理解你的建议;当文件重复时,如何在网页上打印?你在foreach的每个循环中都覆盖了标签的值。你没有添加到标签上。相反,找出一种方法。这是显而易见的s您已经为标签指定了一个新值。只需在lblFileList.Text=“File exist”+Path.GetFileName(theFileName)行中使用+=即可;谢谢,但标签中的输出没有更改,只有最后一个重复的文件。您可以发布更完整的摘录吗?
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;
}