我有一個fileupload
控件,我想要實現的是將一個紐結連接到它,以便它是唯一的。FileUpload如果存在concat(計數器)到名稱
所有這一切,我發現在談論添加職位GUID
或DateTime
如果文件在文件夾中,然後將文件名是文件名+(計數器)
實例我想要實現的是:
- 的文件夾中包含文件名 -
file.png
1)當我再次上傳相同的文件名時,現有的文件名不會被刪除,新的名稱將被稱爲file(1).png
。
2)當我再次上傳相同的文件名,(file.png
) 現在新的文件將被稱爲file(2)
我有這樣的代碼,處理第1'的情況下,但不是第二:
public static string GetUniqueName(string fileName)
{
string dir = Globals.Directories.GetCustomCategoryThumbnailDir();
string fileExtension = Path.GetExtension(fileName);
string fileNameWE = Path.GetFileNameWithoutExtension(fileName);
string[] files = Directory.GetFiles(dir, "*" + fileExtension)
.Select(Path.GetFileName)
.ToArray();
string uniqueName = fileNameWE;
int nextNum = 0;
bool fileExist = false;
string pattern = @"(.*)\(([\d]+)\)";
foreach (var file in files)
{
var tempFileName = Path.GetFileNameWithoutExtension(file);
var match = Regex.Match(tempFileName, pattern);
if (tempFileName.Equals(fileNameWE))
{
// file exist in folder
fileExist = true;
}
if (tempFileName.StartsWith(fileNameWE) && match.Success)
{
// there is a file name that start with "fileToUpload" name, we want to to take the number
nextNum = Convert.ToInt32(match.Groups[2].Value);
nextNum++;
}
}
if (nextNum == 0 && !fileExist)
{
// filename dont exist
return fileNameWE + fileExtension;
}
if (nextNum == 0 && fileExist)
{
// the file name exist without (1)
fileNameWE = $"{fileNameWE}(1)";
return fileNameWE + fileExtension;
}
else
{
var haveParentessis = Regex.Match(fileNameWE, pattern);
if (haveParentessis.Success)
{
// we need to reset the nextNum
nextNum = 1;
}
// return the new unique name with suffix
fileNameWE = string.Format("{0}({1})", fileNameWE, nextNum);
return fileNameWE + fileExtension;
}
}
我該如何做到這一點?
謝謝,但該文件的名稱將始終與(計數器)串聯,因此新的文件夾中,如果文件'文件名(1)'存在名稱將是'文件名(1)(1)' ,這不是我想要的.. –
@ E.Meir,不,它不會...嘗試一次,看看 – Rahul
我沒有問題的數字。 。我有連接總是發生問題.. –