在上传的文件上添加日期戳

时间:2014-09-25 11:21:53

标签: c# asp.net

我目前正在使用asp和c#开发一个网站。其中一个页面允许注册用户上传文件。根据登录的用户存储这些文件。当用登录名和id命中上载时,将创建一个目录。

string userDirectory = "\\Test\\Files\\ " + User.Identity.Name + " " + User.Identity.GetUserId();
if (!Directory.Exists(userDirectory))
        {
            Directory.CreateDirectory(userDirectory);
        }

创建目录时没有问题,文件也会上传。然而,我现在面临的问题是,如果文件中已经存在日期戳,我试图在文件中添加日期戳,这样我就不会覆盖它。请参阅以下代码

string fileName = Path.Combine(userDirectory, FileUpload1.FileName);
if (!File.Exists(fileName))
        {
            FileUpload1.SaveAs(fileName);
        }
        else
        {
            fileName = string.Concat(
            Path.GetFileNameWithoutExtension(fileName),
            DateTime.Now.ToString("_yyyy_MM_dd_HH:mm:ss"),
            Path.GetExtension(fileName)
            );
            FileUpload1.SaveAs(fileName);
        }

这一直给我一个错误:

System.Web.HttpException: The SaveAs method is configured to require a rooted path, and the path 'Test.docx' is not rooted

有谁知道我哪里出错了?提前致谢

1 个答案:

答案 0 :(得分:4)

您必须将目录名称附加到路径,因为您已将其剥离(使用GetFileNameWithoutExtension):

string newFileName = 
    Path.Combine( Path.GetDirectoryName(fileName)
                , string.Concat( Path.GetFileNameWithoutExtension(fileName)
                               , DateTime.Now.ToString("_yyyy_MM_dd_HH_mm_ss")
                               , Path.GetExtension(fileName)
                               )
                );

另请注意,不支持在文件名中使用:,因此我将其替换为_