With the following code:
protected void Button1_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
string fileExt =
System.IO.Path.GetExtension(FileUpload1.FileName);
if (fileExt == ".jpg" || fileExt == ".jpeg" || fileExt == ".gif" || fileExt == ".png")
{
try
{
FileUpload1.SaveAs(Server.MapPath("../uploads/originals/" + FileUpload1.FileName));
Label1.Text = "File name: " +
FileUpload1.PostedFile.FileName + "<br>" +
FileUpload1.PostedFile.ContentLength + " kb<br>" +
"Content type: " +
FileUpload1.PostedFile.ContentType;
}
catch (Exception ex)
{
Label1.Text = "ERROR: " + ex.Message.ToString();
}
}
else
{
Label1.Text = "Only image files are allowed!";
}
}
else
{
Label1.Text = "You have not specified a file.";
}
}
I want to make it so that if the file exists it changes the name of it, is there any built in functionality for this? Classic ASP had a parameter so that when you upload say house.jpg, and then again it would become house(1).jpg etc etc which was useful.
There is nothing built in - you will need to make your own algorithm:
This can be constructed as a loop as well:
I recommend you to tag the Filename with GUID to ensure that each file has unique names.
Maintain the database with the original file name and replace it when the file is downloaded.
You can check if the file exists by using the File static class:
There is no built-in method for adding a (1) to the file name, but you can use the System.IO.Path.GetRandomFileName method to get a file name that is guaranteed to be unique.If you don't need the file name itself to be readable then this might be useful.
I have a small method that I use to get unique filenames like that, by adding (1), (2) etc on them:
Why don't you delete the file first if the file is exists and then invoke the "SaveAs" method?