2013-05-30 128 views
12

我想通過方法HttpPostedFileBase.SaveAs()將上傳的文件保存到物理路徑。使用HttpPostedFileBase.SaveAs在物理路徑中保存上傳的文件

當我選擇一個物理路徑時,會出現一個異常,表示該路徑必須是虛擬的。

var fileName = Path.GetFileName(fileurl.FileName); 
var path = "C:/Projets" + fileName; 
fileurl.SaveAs(Server.MapPath(path)); 

如何更改我的代碼以便能夠將文件保存到每個我想要的位置?

+0

我不認爲這是可能的。 IIS在應用程序池中運行您的應用程序,將其視爲沙箱。您只有權限訪問該區域。 – Belogix

+0

@Belogix但我怎樣才能更改應用程序池processus的權限,因爲我保存在該區域中的文件,我沒有那麼刪除它的權限,甚至在那裏創建一個新的目錄或文件文件 – Lamloumi2

回答

18

Server.MapPath只適用於作爲網站一部分的物理位置。如果你想保存文件外,你可以使用以下命令:

var fileName = Path.GetFileName(fileurl.FileName); 
fileurl.SaveAs(Path.Combine(@"c:\projects", fileName)); 

確保雖然,根據您的應用程序池執行帳戶被授予寫入權限到此文件夾。

1

Server.MapPath用於虛擬路徑。您可以嘗試使用Path.GetFullPath(路徑)。

相關問題