不要覆盖通过FileUpload控件上传的文件

Tom*_*len 7 c# asp.net file-upload

使用以下代码:

    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.";
        }


    }
Run Code Online (Sandbox Code Playgroud)

我想这样做,如果文件存在,它会更改它的名称,是否有任何内置功能?经典ASP有一个参数,所以当你上传说house.jpg,然后它将成为house(1).jpg等有用.

Ode*_*ded 9

内置任何东西 - 您需要制作自己的算法:

string path = Server.MapPath("../uploads/originals/" + FileUpload1.FileName);

if(!File.Exists(path))
{
  FileUpload1.SaveAs(path);
}
else
{
  // figure a different file name, perhaps check for existence as well
}
Run Code Online (Sandbox Code Playgroud)

这也可以构建为循环:

string path = Server.MapPath("../uploads/originals/" + FileUpload1.FileName);

while(File.Exists(path))
{
  // GetAlternatePath generates a new filename based on the path passed in
  path = GetAlternatePath(path); 
}
FileUpload1.SaveAs(path);
Run Code Online (Sandbox Code Playgroud)


Tom*_*len 5

var fileName = file.FileName;
var extension = Path.GetExtension(fileName);
var nameWithoutExtension = Path.GetFileNameWithoutExtension(fileName);

var i = 1;
while (File.Exists(uploadFolder + fileName))
{
    fileName = nameWithoutExtension.Trim() + " (" + i + ")" + extension;
    i++;
}

file.SaveAs(uploadFolder + fileName);
Run Code Online (Sandbox Code Playgroud)