2010-05-14 22 views
1

好的我見過一些人遇到了這個問題 - 但我已經使用了文件路徑,而不是相對路徑。我的代碼可以在我的電腦上正常工作,但當另一位開發人員上傳圖片時,他們會收到此錯誤消息。我認爲這是文件夾中的安全許可 - 但系統帳戶可以完全訪問該文件夾(儘管我對如何測試應用程序在哪個帳戶下運行感到困惑)。此外,通常在本地運行不經常給你太多的安全問題:)SaveAs方法被配置爲需要一個根路徑,並且路徑<blah>沒有根

的代碼段:

 Guid fileIdentifier = Guid.NewGuid(); 
     CurrentUserInfo currentUser = CMSContext.CurrentUser; 
     string identifier = currentUser.UserName.Replace(" ", "") + "_" + fileIdentifier.ToString(); 
     string fileName1 = System.IO.Path.GetFileName(fileUpload.PostedFile.FileName); 
     string Name = System.IO.Path.GetFileNameWithoutExtension(fileName1); 
     string renamedFile = fileName1.Replace(Name, identifier); 
     string path = ConfigurationManager.AppSettings["MemberPhotoRepository"]; 

     String filenameToWriteTo = path + currentUser.UserName.Replace(" ", "") + fileName1; 
     fileUpload.PostedFile.SaveAs(filenameToWriteTo); 

那裏有我的配置設置值是:

同樣能正常工作在我的電腦! (我檢查了其他人在他們的PC上有文件夾)。

任何建議,將不勝感激 - 謝謝:)

回答

0

不知道是什麼問題,因爲它排序。我們沒有最終調試它,因爲它在一個非開發人員的PC上,我有一個解決方法讓他繼續他的工作,同時我調查了潛在的原因。所以也許是他更新/運行通過抓取我的目錄副本修復的網站或文件權限的方式。

至少我知道它需要物理文件路徑,所以希望不會再遇到這個問題!

0

顯然,它說的是,你的filenameToWriteTo不是植根路徑......也就是說,它是一個相對路徑,和你的服務器配置不喜歡這一點。使用Server.MapPath獲得真實路徑......像......

string realPhysicalPath = Path.Combine(Server.MapPath(" "), filenameToWriteTo); 
fileUpload.PostedFile.SaveAs(realPhysicalPath); 

萬一打印出filenameToWriteTo,看看它的相對或物理路徑。如果它相對使用上面的方法。

+0

謝謝 - 但我的配置值是一個物理文件路徑 - 所以它是一個真正的路徑。對不起,複製粘貼失敗,所以它不會很明顯,它包含一個物理文件路徑:) – Jen 2010-06-02 02:02:50

0

請確保您保存文件的文件夾存在。如果文件夾不存在,它不會爲您創建,並且SaveAs方法會拋出您現在擁有的異常。

謝謝。