C# 服务器上的文件将被同名文件覆盖
我正在尝试使用GUID将同名文件上载到服务器,但它不起作用,并且仍在替换旧文件,有人能告诉我在哪里出错吗 以下是要上载的y代码: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;
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();