将上传的文件存储到创建的目录中

时间:2014-08-12 11:11:58

标签: c# asp.net

我目前正在开发一个用asp开发的网站。一页允许用户发送消息和上传文件。文件上传,我可以将它保存到目录没问题。但是,客户端需要为每个登录用户创建一个目录,然后将上载的文件保存到该特定目录。我已设法使用以下代码创建目录。

if (!Directory.Exists("\\Users\\uploads " + User.Identity.Name + " " + User.Identity.GetUserId()))
        {
            Directory.CreateDirectory("\\Users\\uploads " + User.Identity.Name + " " + User.Identity.GetUserId());
        }

根据需要创建目录。但是我似乎无法将文件保存到该特定目录。而是将文件保存到uploads目录。有谁知道我怎么能这样做。提前致谢

我保存文件的代码

FileUpload1.SaveAs("\\Users\\uploads " + User.Identity.Name + " " + User.Identity.GetUserId()));

4 个答案:

答案 0 :(得分:4)

通过引入变量来清理代码以创建目录:

string userDirectory = "\\Users\\uploads " + User.Identity.Name + " " + User.Identity.GetUserId();

if (!Directory.Exists(userDirectory))
{
    Directory.CreateDirectory(userDirectory);
}

然后在保存到该目录时,请确保指定文件名而不是目录:

string filename = Path.Combine(userDirectory, FileUpload1.Filename);

FileUpload1.SaveAs(filename);

请参阅Don't overwrite file uploaded through FileUpload control以确保您不会覆盖同名文件。

答案 1 :(得分:0)

我认为您在FileUpload1.SaveAs(...)方法中缺少文件名。根据{{​​3}},您需要检索FileUpload1.FileName

答案 2 :(得分:0)

您的解决方案:

string targetPath = "\\Users\\uploads " + User.Identity.Name + " " + User.Identity.GetUserId());
string filePath = Path.Combine(targetPath, Server.HtmlEncode(FileUpload1.FileName));
FileUpload1.SaveAs(filePath);

答案 3 :(得分:0)

我想您必须将代码更改为:

FileUpload1.SaveAs(Server.MapPath("pathtodirectory" + FileUpload1.FileName));