2013-09-27 63 views
0

我正在將用戶的個人資料圖片上傳到文件夾並將其路徑保存到RavenDB。但我的代碼給我一個錯誤,找不到路徑的一部分。在此行中將圖像上傳到Asp.net文件夾時找不到路徑的一部分

file.SaveAs(path); 

代碼:

[HttpPost] 
    public ActionResult UploadPic(FileManagement fmanage, HttpPostedFileBase file) 
    { 


     string email = User.Identity.Name; 

     if (file != null && file.ContentLength > 0) 
     { 
      var FileName = string.Format("{0}.{1}", Guid.NewGuid(), file.ContentType); 
      var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName); 
      file.SaveAs(path); 

      using (var session = DocumentStore.OpenSession("RavenMemberShip")) 
      { 

       var query = from q in Session.Query<Registration>() where q.Email == email select q; 
       if (query.Count() > 0) 
       { 
        foreach (var updated in query) 
        { 
         fmanage.FileName = FileName; 
         fmanage.Path = path; 
         session.SaveChanges(); 

        } 
       } 
      } 
     } 
     else ModelState.AddModelError("", "Remove the errors and try again"); 
     return View(); 
    } 
+0

它必須是'App_Data'在'使用Server.Mappath(「〜/ App_Dta /上傳」)' – AthibaN

+0

我把它改成App_Data文件,但同樣的錯誤消息我收到。 – Wasfa

+0

異常詳細信息是異常詳細信息:System.IO.DirectoryNotFoundException:無法找到部分路徑'c:\ users \ wasfa \ documents \ visual studio 2012 \ Projects \ MvcMembership \ MvcMembership \ App_Data \ Uploads \ daed3def-df2b-4406 -aa9e-c1995190aa6d.image \ JPEG」。 – Wasfa

回答

0

您的路徑中的打字錯誤...

替換...

var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName); 

與...

var path = Path.Combine(Server.MapPath("~/App_Data/Uploads"), FileName); 

您還需要確保您具有寫入此目錄的相關權限。

根據您的錯誤,文件路徑看起來不正確。

C:\用戶\ wasfa \的文檔\ Visual Studio的 2012 \項目\ MvcMembership \ MvcMembership \ App_Data文件\上傳\ daed3def-df2b-4406-AA 9E-c1995190aa6d.image \ JPEG

daed3def-df2b-4406-aa 9e-c1995190aa6d.image \ jpeg文件的名稱?

嘗試:

[HttpPost] 
public ActionResult UploadPic(FileManagement fmanage, HttpPostedFileBase file) 
{ 
    string email = User.Identity.Name; 

    if (file != null && file.ContentLength > 0) 
    { 
     var FileName = string.Format("{0}.{1}", Guid.NewGuid(), Path.GetFileName(file.FileName));    
     var path = Path.Combine(Server.MapPath("~/App_Dta/Uploads"), FileName); 
     file.SaveAs(path); 

     using (var session = DocumentStore.OpenSession("RavenMemberShip")) 
     { 

      var query = from q in Session.Query<Registration>() where q.Email == email select q; 
      if (query.Count() > 0) 
      { 
       foreach (var updated in query) 
       { 
        fmanage.FileName = FileName; 
        fmanage.Path = path; 
        session.SaveChanges(); 

       } 
      } 
     } 
    } 
    else ModelState.AddModelError("", "Remove the errors and try again"); 
    return View(); 
} 
+0

我已經刪除了這個鍵入錯誤,但是我得到了異常詳細信息:System.IO。DirectoryNotFoundException:無法找到部分路徑 'c:\ users \ wasfa \ documents \ visual studio 2012 \ Projects \ MvcMembership \ MvcMembership \ App_Data \ Uploads \ daed3def-df2b-4406-aa9e-c1995190aa6d.image \ jpeg'。 – Wasfa

+0

@Wasfa,你沒有提到問題中的完整錯誤,這將是有益的。文件路徑看起來不正確。 – christiandev

+0

@Wasfa,我已經更新了創建文件名的代碼部分。這現在應該工作。 – christiandev

0

file.SaveAs(path)之前,嘗試檢查目錄存在,如果沒有,創建一個,

if(CreateFolderIfNeeded(path); 
{ 
    file.SaveAs(path); 
} 

私有函數如果需要創建目錄,

private static bool CreateFolderIfNeeded(string path) 
     { 
      bool result = true; 
      if (!Directory.Exists(path)) 
      { 
       try 
       { 
        Directory.CreateDirectory(path); 
       } 
       catch (Exception) 
       { result = false; } 
      } 
      return result; 

希望這有助於。

0

檢查代碼中的var FileName = string.Format("{0}.{1}", Guid.NewGuid(), file.ContentType);行。

file.ContentType不會返回您正在上傳的文件的擴展名。這shuold像daed3def-df2b-4406-AA 9E-c1995190aa6d.jpeg代替daed3def-df2b-4406-AA 9E-c1995190aa6d.image \ JPEG

使用找到上傳的文件擴展名子。

希望這有助於

相關問題