2014-02-10 971 views
1

丟失。找不到路徑的一部分C#asp.net,路徑有

我有這樣的代碼:

public ActionResult UploadCV(string userId, HttpPostedFileBase cvfile) 
    { 
     if (cvfile != null && cvfile.ContentLength > 0) 
     {     
      var bareFilename = Path.GetFileNameWithoutExtension(cvfile.FileName); 
      var fileExt = Path.GetExtension(cvfile.FileName); 
      //save to dir first 
      var path = Path.Combine(Server.MapPath("/App_Data/userfiles/"), 
            userId + "/"); 
      var dir = Directory.CreateDirectory(path); 
      cvfile.SaveAs(path); 
      //save to db.. 
      var user = Ctx.Users.FirstOrDefault(x => x.Id == userId); 
      user.CvLocation = "/App_Data/userfiles/" + userId + "/" + bareFilename + fileExt; 
      user.CvUploadDate = DateTime.Now; 
      Ctx.SaveChanges(); 

     } 
     return RedirectToAction("Index", "Settings", new { area = "" }); 
    } 

就行了:

cvfile.SaveAs(path); 

我得到的錯誤

Could not find a part of the path 
'C:\Users\me\big\ol\path\App_Data\userfiles\4cf86a2c-619b-402a-80db-cc1e13e5288f\'. 

如果我瀏覽到在瀏覽器中的路徑,它出現精細。

我所試圖解決的是那種用戶通過上傳自己唯一的GUID他們的分貝有。我想要的文件夾「userfiles」擁有的GUID用戶的文件夾名稱,該文件夾中我有「mycoolpic.png」

任何想法,我做錯了什麼?

+2

通常,這意味着有一個權限問題。當運行時沒有訪問資源的權限時,它可能會拋出未找到的異常。 – David

+1

如果您保存圖像,則需要添加它的文件名:Path.Combine(path,「mycoolpic.png」),而不是將其保存爲目錄。 –

回答

3

您試圖保存不給一個文件名。 HttpPostedFileBase.SaveAs需要一個代表文件名的參數,而不僅僅是路徑。 只需使用服務器path加上之前提取的bareFilename即可。

var path = Path.Combine(Server.MapPath, "/App_Data/userfiles/"),userId); 
var dir = Directory.CreateDirectory(path); 
cvfile.SaveAs(Path.Combine(path, bareFilename); 
+0

我們如何能夠在windows應用程序解決這一問題,我懷疑是這裏http://stackoverflow.com/questions/39290793/could-not-find-a-part-of-path-error-on-server – BNN

1

我在生產環境中有這個問題,但沒有在開發過程中。

我的問題是因爲我omiting的~符號。

我從這個去:

var path = Server.MapPath("/App_Data/templates/registration.html"); 

這樣:

var path = Server.MapPath("~/App_Data/templates/registration.html"); 
相關問題