2014-08-29 25 views
0

我發現我的問題點,我認爲也許只是因爲我運行在本地主機上的應用程序,但我不覺得我可以放心地部署到下一層進行測試。獲取VB.NET Relative Upload路徑到正在運行的應用程序?

我有一個Telerik RadAsyncUpload控件,它有一個TargetFolder="\Upload",並且假設它一直會使用應用程序中的\ Upload文件夾。

有沒有辦法來強制路徑是的應用程序?

lsFullFileName = HttpContext.Current.Server.MapPath(fuUploadFile.TargetFolder) 
       + "\" + Path.GetFileName(lsFileName) 

這是在VB.net。該文件是在結束了「C:\上傳」(我創建看看發生了什麼事情),但該文件應在App_Data文件的臨時位置移動到 「C:\的applicationName \的applicationName \上傳」

ASPX

<telerik:RadAsyncUpload 
    runat="server" 
    ID="fuUploadFile" 
    MaxFileSize="262144000" 
    OnClientFileUploaded="OnClientFileUploaded" 
    InputSize="50" 
    TargetFolder="\Upload" 
    AllowedFileExtensions=".wav,.mp3,.mpeg,.mpg,.wmv,.avi,.mp4"> 
</telerik:RadAsyncUpload> 

感謝。

+2

這通常是一個非常糟糕的主意,讓用戶上傳文件的根目錄中。您應該保持原樣(在您的應用程序之外)並創建一個處理程序來恢復文件。這樣你就可以安全地訪問你的文件和更多的東西(比如文件被存檔時的日誌記錄等),並且你確定沒有人會從你的服務器上執行遠程起源的任何東西...... – 2014-08-29 13:31:38

+0

@Bartdude這是什麼「非常糟糕的想法「來自?如果應用程序內的「上傳」文件夾的權限設置正確,則不會有問題,即沒有人擁有執行權限。我覺得更關心的是服務帳戶有能力在其域外創建文件夾。但是,如果上傳文件夾位於公共站點之外,則不必擔心,但不應將其保留在系統驅動器根目錄上的隨機文件夾中。也許將它移動到Web根目錄「C:\ applicationname \ Upload」的上一級。 – Tim 2014-09-02 13:28:00

+0

@Tim>顯然,它不應該是一個隨機的文件夾,但如果我沒有記錯的HTML或JavaScript文件不會被「執行」權限會受到影響,這意味着有人可以「託管」惡意的JavaScript到您的域名和通過它可以訪問很多(用戶)數據。事實是,即使您還應該清理輸入內容,將正確的訪問權限放在文件夾等等上,您仍然可以將用戶上傳的文件存儲在webroot之外,這是已知的最佳做法......您永遠不知道會發生什麼,更好的是要小心。 – 2014-09-05 11:54:06

回答

1

如果你在保持你的站點文件夾內上傳目錄堅持,那麼你可以使用像~\Upload的路徑,這將迫使路徑從Web應用程序根目錄開始。

然而,這一般是作爲Bartdude提出了一個糟糕的主意。

1

試試這個:

uploadPath As String = AppDomain.CurrentDomain.BaseDirectory & "Upload" 
相關問題