使用C#中的这个asp网页上传文件,我需要检查重复项。
我接受服务器上传的3个文件。
在服务器上传新的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;
}
}
}
}
答案 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数组中,以确保列表完整。