2014-08-29 44 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" 
相关问题