【发布时间】:2017-03-26 16:37:08
【问题描述】:
我正在使用 ASP.NET FileUpload 控件将文件上传到服务器并存储它。
在我的情况下,上传的文件应该有一个.doc 或.docx 扩展名,否则会提供错误消息。
if (fileUpload1.HasFile)
{
string fileExtension = Path.GetExtension(fileUpload1.FileName);
if (fileExtension.ToLower() == ".doc" || fileExtension.ToLower() == ".docx")
{
fileUpload1.SaveAs(Server.MapPath("~/Uploads/" + fileUpload1.FileName));
statusLabel.Text = "File Uploaded Successfully";
statusLabel.ForeColor = System.Drawing.Color.Green;
}
else
{
statusLabel.Text = "Only files with .doc or .docx extension are allowed!";
statusLabel.ForeColor = System.Drawing.Color.Red;
}
}
当我上传文件并点击上传按钮时,它将存储在我项目的以下目录中:
~/Uploads/
假设我上传了一个包含一些数据的 doc 文件 (test.docx)。会成功上传到服务器并保存在项目目录中==>~/Uploads/
但问题是,当我再次尝试上传具有相同签名(test.docx)但内容不同的文件时,它上传成功,但在项目Uploads 目录中,以前的文件将被删除,只有新文件将呈现。但我想保留这两个文件。
我该如何解决这个问题?
【问题讨论】:
-
永远不要使用用户输入(如文件名),因为文件名是 OS。您可以使用任何内部名称,最简单的是 DateTime.UtcNow 或 Guid.NewGuid + 如果您愿意,可以通过数据库将其映射到用户的文件名
标签: c# asp.net file-upload