我目前正在开发一个用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()));
答案 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));