C# 服务器上的文件将被同名文件覆盖

C# 服务器上的文件将被同名文件覆盖,c#,asp.net,C#,Asp.net,我正在尝试使用GUID将同名文件上载到服务器,但它不起作用,并且仍在替换旧文件,有人能告诉我在哪里出错吗 以下是要上载的y代码: protected void btnAddExpenditure_Click(object sender, EventArgs e) { if (FileUpload1.HasFile) { string FileName = FileUpload1.PostedFile.FileName;

我正在尝试使用GUID将同名文件上载到服务器,但它不起作用,并且仍在替换旧文件,有人能告诉我在哪里出错吗

以下是要上载的y代码:

 protected void btnAddExpenditure_Click(object sender, EventArgs e)
    {
        if (FileUpload1.HasFile)
        {

           string FileName = FileUpload1.PostedFile.FileName;
           if (File.Exists(FileName))
            {
                FileName = Guid.NewGuid() + FileName;
            }
                //check file Extension & Size
            int filesize = FileUpload1.PostedFile.ContentLength;
            if (filesize > (20 * 1024))
            {
                Label1.Text = "Please upload a zip or a pdf file";
            }

            string fileextention = System.IO.Path.GetExtension(FileUpload1.FileName);
            if (fileextention.ToLower() != ".zip" && fileextention.ToLower() != ".pdf")
            {
                Label1.ForeColor = System.Drawing.Color.Green;
                Label1.Text = "Please upload a zip or a pdf file";

            }



            else
            {
                string ReceiptFileName = Path.GetFileName(FileUpload1.PostedFile.FileName);



                //save file to disk

                FileUpload1.SaveAs(Server.MapPath("Reciepts/" + ReceiptFileName));
}
这是你的问题。您正在创建一个保存文件名(
FileName
)的新字符串变量。如果存在,则使用新GUID修改
文件名
。但最后

string ReceiptFileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
您仍在使用原始文件upload1.PostedFile.FileName。这应该改为

string ReceiptFileName = Path.GetFileName(FileName);
编辑:再次阅读代码,我认为您可能还有其他问题。假设FileUpload1.PostedFile.FileName是完整路径(即C:\Folder\File.txt),则

将导致类似123-4321-GUIDC:\Folder\File.txt的结果

我怀疑那是你想要的。你可能想改变一下

FileName = FileName + Guid.NewGuid();

即使您设置了文件名,您也不会使用它来保存,而是使用ReceiptFileName变量,这就是问题所在!如果这是正确的答案,你能继续并把这个问题标记为正确吗?
FileName = Guid.NewGuid() + FileName;
FileName = FileName + Guid.NewGuid();