Jag har ett problem, jag har en lite applikation och där ska man kunna ladda upp dina bilder, men jag vill kunna ändra namn eller snare lägga till index på filen dvs minBild.jpg kommer att sparas som minBild(1).jpg om minBild.jpg redan finns.
Hur gör man sånt?
Så här ser klassen ut så länge.
public static class Upload
{
private static bool CheckPictureType(string fileName)
{
string extension = Path.GetExtension(fileName);
switch (extension.ToLower())
{
case ".jpg":
return true;
case ".gif":
return true;
case ".png":
return true;
default:
return false;
}
}
public static string UploadPicture(FileUpload uploadedFile, int maxFileSize)
{
if (uploadedFile.HasFile)
{
if (uploadedFile.PostedFile.ContentLength < maxFileSize)
{
if (CheckPictureType(uploadedFile.FileName))//om det är tillåtet extension
{
//var filen ska sparas
string destDir = HttpContext.Current.Server.MapPath("~/APP/Images");
//under vilket namn
string imageName = Path.GetFileName(uploadedFile.PostedFile.FileName);
//kombinerar destDir och imagename
string destPath = Path.Combine(destDir, imageName);
uploadedFile.PostedFile.SaveAs(destPath);
return "filen är uppladad";
}
else
//filens typ är inte korrekt
return "This is not a guilty pic extension.";
}
else
//Den valda filen är för stor
return "Picture to large, maximum size " + maxFileSize + " bytes.";
}
else
//ingen fill har blivit valt(uppladnings rutan är tom)
return "No picture";
}
}
När du har bestämt destPath får du helt enkelt kolla om File.Exists(destPath), och i så fall bestämma ett nytt namn på din bild.
string destPath = Path.Combine(destDir, imageName);
if (File.Exists(destPath))
{
//Bilden finns, skapa nytt namn och kör sedan destPath = Path.Combine(destDir, imageName);
}
Lägg dock märke till att du måste se till att ditt nya namn inte heller används!
Det är precis jag hela tiden försöker att göra men lyckas inte ändå, när jag debbugar så hamnar han aldrig i den if-en även i fall filen finns redan:-(
Den andra delen tänkte jag lösa med i++ och while.
personligen brukar jag lösa sånt här med att ALLTID döpa om filer som laddas upp eftersom chansen att 2 filer heter samma sak är rätt stor ibland (tex img0001.jpg)
jag lägger helt enkelt till aktuellt datum och tid före eller efter filnamnet
Risken för att 2 filer med samma namn skall laddas upp samma sekund är ju rätt liten
personligen brukar jag lösa sånt här med att ALLTID döpa om filer som laddas upp eftersom chansen att 2 filer heter samma sak är rätt stor ibland (tex img0001.jpg)
jag lägger helt enkelt till aktuellt datum och tid före eller efter filnamnet
Risken för att 2 filer med samma namn skall laddas upp samma sekund är ju rätt liten
Ett annat alternativ är att använda GUID, antingen för att döpa om bilden helt eller för att lägga till en del av ett GUID före och/eller efter.
254 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849