2010-08-12 40 views
1

我想問如何上傳我的文件在服務器外(爲了安全問題)我使用teleric Rad UploadFiles(ASP.net web應用程序).​​.我不能使用方法如何上傳服務器外的文件asp.net

server.map("~\\..\\") 

到服務器去外面指定服務器以外所需的路徑我得到這個

例外 不能使用的領先..退出頂級目錄上方。

有沒有什麼辦法來確定服務器

請幫忙之外的路徑..

回答

2

使用的完整路徑,如「C:\上傳」,並確保網絡進程具有寫權限到該文件夾​​

+0

但是當應用程序發佈在服務器上時,服務器是否可以識別這樣的絕對路徑? – 2010-08-12 13:05:53

+0

我在我的服務器上沒有任何問題。我建議您將路徑本身存儲在web.config文件(appSettings部分)中,以便您可以爲開發和生產服務器設置不同的路徑。 – Ray 2010-08-12 13:22:41

+0

非常感謝你,我認爲這是解決方案,請兩個問題(你使用Server.Map()函數),如何給這個web進程這個權限 – 2010-08-12 13:37:58

0

我認爲你遇到了一個問題,因爲server.map(..)調用,你不能只使用硬編碼路徑(從配置讀取當然)。因此,請使用「C:\ UploadedFiles \」之類的東西。您需要確保ASP.NET正在運行的用戶有權寫入該目錄等。

+0

太感謝你了,請你能不能給我更多的細節 其中,config文件中,什麼是替代Server.Map() 和重複的問題:: 時在服務器上發佈的應用程序,服務器可以識別這樣的絕對路徑嗎? – 2010-08-12 13:08:15

1

這完全包含在Telerik文檔中對於這個控件可以找到here。簡而言之:

[ASP.NET] RadUpload聲明

<telerik:RadUpload ID="RadUpload1" Runat="server" /> 
<asp:Button Runat="server" ID="Button1" Text="Submit" 
    OnClick="Button1_Click" /> 

[C#]點擊事件處理

using Telerik.Web.UI; 
... 
protected void Button1_Click(object sender, System.EventArgs e) 
{ 
    foreach (UploadedFile f in RadUpload1.UploadedFiles) 
    { 
     f.SaveAs("c:\\uploaded files\\" + f.GetName(), true); 
    } 
} 
+0

但是當應用程序發佈在服務器上時,服務器是否可以識別這樣的絕對路徑? – 2010-08-12 13:05:31

+0

當然,Server.MapPath只需要一個「〜/ directory/directory /」形式的路徑並將其轉換爲「C:\ Inetapp \ www \ directory \ directory」。 – Lazarus 2010-08-12 13:09:51

+0

非常感謝你,但我不知道爲什麼我的團隊領導告訴我(不要在你的應用程序中使用任何絕對路徑,因爲服務器無法識別它們,他告訴我使用Server.Map()相反,但在這個問題,我想上傳到服務器外,這種方法將路徑轉換爲在服務器中) – 2010-08-12 13:17:27

0

我使用Internet Explorer 8,並有類似的問題。我可以在IIS7上從服務器上載託管上載頁面。我也可以從另一個不同的服務器上傳,但是在與web服務器(託管上傳頁面)相同的域上。這兩個工作。

但是,從不在域上的PC上傳,沒有上傳,並給出了500錯誤。我最終將Internet Explorer上的上傳網站添加到了可信站點,並且它運行良好。 :)

在此之前,我檢查了文件夾等權利,這一切都好。也有大小的問題,然後有一個博客,說我要補充:

<requestLimits maxAllowedContentLength="2000000000" /> <!-- bytes --> 
</requestFiltering> 

到applicationHost.config文件在Web服務器上的位置C:\windows\system32\inetsrv\config\

另外在IIS7我也不得不檢查ASP性能在上傳頁面所在網站的服務器管理器中,將限制屬性\最大請求實體主體限制更改爲匹配applicationHost.config文件中的大小。

這是一個經典的asp網站。

相關問題