【问题标题】:Getting “Could not find part of the path” error出现“找不到路径的一部分”错误
【发布时间】:2024-05-18 15:05:02
【问题描述】:

我在我的 Web 应用程序中使用 FileUploader 控件。我想将文件上传到指定的文件夹中。由于具体的文件夹还不存在,我必须在我的代码中创建它的路径。

Could not find part of the path.
mscorlib.dll but was not handled in user code

Additional information: Could not find a part of the path
'C:\Users\seldarine\Desktop\PROJ\ED_Project\SFiles\Submissions\blueteam\Source.zip

我认为我的文件路径有问题。 这是我的代码的一部分:

 //teamName is a string passed from a session object upon login 
 string filePath = "SFiles/Submissions/" + teamName+ "/";

 //If directory does not exist
 if (!Directory.Exists(filePath))
 { // if it doesn't exist, create

    System.IO.Directory.CreateDirectory(filePath);
 }

 f_sourceCode.SaveAs(Server.MapPath(filePath + src));
 f_poster.SaveAs(Server.MapPath(filePath + bb));

【问题讨论】:

    标签: c# asp.net file file-upload directory


    【解决方案1】:

    试试:

    //teamName is a string passed from a session object upon login 
     string filePath = "SFiles/Submissions/" + teamName+ "/";
     string severFilePath = Server.MapPath(filePath);
     // The check here is not necessary as pointed out by @Necronomicron in a comment below
     //if (!Directory.Exists(severFilePath))
     //{ // if it doesn't exist, create
    
        System.IO.Directory.CreateDirectory(severFilePath);
     //}
    
     f_sourceCode.SaveAs(severFilePath + src));
     f_poster.SaveAs(severFilePath + bb));
    

    您需要检查和创建基于Server.MapPath(filePath); 的目录,而不是filePath(我假设您的srcbb 是没有任何子目录路径的文件名)。

    最好使用Path.Combine而不是串联字符串:

    f_sourceCode.SaveAs(Path.Combine(severFilePath,src));
    f_poster.SaveAs(Path.Combine(severFilePath,bb));
    

    【讨论】:

    • 我同意使用 Path.Combine。它运作良好。谢谢。
    • 不需要检查目录是否存在。 If the directory already exists, this method does not create a new directory, but it returns a DirectoryInfo object for the existing directory. msdn.microsoft.com/en-us/library/54a0at6s(v=vs.110).aspx
    • @Necronomicron:很好,我在复制代码时没有注意到。
    最近更新 更多