【问题标题】:How to access difference path from mvc如何从 mvc 访问差异路径
【发布时间】:2013-09-12 07:08:24
【问题描述】:

我正在制作一个上传网站。我想将图像从我的项目上传到 out 文件夹。

这是我的项目的链接:

D:/repo/abc/abc.WebUI.Back

我想上传图片到:

D:/repo/abc/abc.WebUI.POS/images/abc-promo

我试过用这个:

string filePath = "";
            string fileName = null;
            var path = @"~\..\repo\abc\abc.WebUI.POS\images\abc-promo\";
            if (vm.file != null && vm.file.ContentLength > 0)
            {
                filePath = Path.Combine(Server.MapPath(path),
                           Path.GetFileName(vm.file.FileName));
                fileName = vm.file.FileName;
                vm.file.SaveAs(filePath);
            }

我有一个错误。

Cannot use a leading .. to exit above the top directory.

有什么办法解决这个问题吗?

【问题讨论】:

  • 只需使用 ~\repo\abc\abc.WebUI.POS\images\abc-promo\ 之类的路径就不需要了..

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


【解决方案1】:

当你在

中加入“..”时
var path = @"~\..\repo\abc\abc.WebUI.POS\images\abc-promo\";

它可以用来向上转义目录,这种类型的操作被认为是一个安全漏洞。谷歌“双点攻击”,你就会知道为什么。而不是您分配的路径变量,请使用以下内容。

Server.MapPath("~/images/abc-promo/")

并确保不要像在代码块中那样开始将目录映射到 web 文件夹之外,如“repo\abc\abc.WebUI.POS”。当你放一个“~”(tidle)时,它的意思是“从网络应用程序的根文件夹开始)。希望这能解决你的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    相关资源
    最近更新 更多