2011-07-01 142 views
0

我的主機具有以下結構:保存文件到文件

/網絡 - >哪裏網站的內容 /數據 - >文件夾的權限讀取和寫入

如何上傳文件到Data文件夾? 下面的代碼不起作用,因爲「〜」返回目錄/ web。

//Save Image 
var serverPath = Server.MapPath(Href("~/Data/") + id); 
Directory.CreateDirectory(serverPath); 
imgOri.Save(Path.Combine(serverPath, fileName)); 

回答

2

Server.MapPath()旨在將路徑映射到應用程序的根目錄。當您試圖在根上面上傳文件時,它不起作用。

可以通過指定確切的文件路徑(如果主機可以提供它)上傳根上方的文件:

VAR SERVERPATH = 「C:\ YourFolder \數據\」)+ ID);

我很驚訝你的主機允許你上傳根目錄之外的文件,因爲這樣做有很多危險......你也可能遇到信任問題。

+0

但如何關聯圖像 甚至 ridermansb

+0

您需要創建一個處理程序來渲染圖像。 http://www.dotnetperls.com/ashx –

1

您可以獲取到你的站點根目錄的同級使用如下坐在使用Server.Mappath一個目錄的路徑:

@{ 
    var root = Server.MapPath("."); 
    var temp = root.Split('\\'); 
    temp[temp.Length - 1] = "Data"; 
    var newpath = string.Join("\\", temp); 
} 

用於提供根之外的「數據」目錄的託管公司文件夾作爲Access mdb數據庫等安全的地方。您無法直接瀏覽到您網站根目錄之外的目錄。通過引入App_Data,ASP.NET不再需要這些東西。現在你想要使用這種類型的文件夾的唯一原因是你想在提供目錄內容之前應用某種認證。然後你需要使用一個處理程序,或者一個簡單的cshtml文件。您可以將WebSecurity幫助程序與WebImage幫助程序組合起來,以首先對用戶進行身份驗證,然後在通過測試時檢索並顯示圖像。 img標籤中的src將指向cshtml文件,其中包含查詢字符串或UrlData值,因此您知道要顯示哪個圖像。

如果在顯示圖像之前不需要驗證用戶,則將圖像文件存儲在根外部會增加不必要的複雜程度。