【问题标题】:get virtual path from url in asp net mvc 5 [closed]从asp net mvc 5中的url获取虚拟路径[关闭]
【发布时间】:2014-06-25 19:44:57
【问题描述】:

我想将http://localhost/app/Uploads/file.png 之类的 URL 转换为我的应用程序虚拟路径,即~/Uploads/file.txt

我的问题是如何在 asp net mvc 中完成?

编辑:对我的场景进行一些解释,以便进一步澄清。

我有一个“创建”表单。在此表单中,用户设置其个人资料并可以将照片上传到服务器。这张照片可以通过异步上传到服务器来预览。这是通过 FileUploadController 的操作 Post() 来完成的,它是一个 ApiController。此操作只是将上传的文件保存到虚拟路径“~/Uploads/”,然后返回保存文件的完整 URL,例如 http://localhost/app/Uploads/file.png。然后,页面上的 javascript 捕获此 url 并更新 <img> 标记以显示图片并使用此 URL 设置隐藏输入字段的值。这很好用。

现在,我必须实现这个“创建”表单的 提交 操作。除此之外,动作视图模型接收照片的 URL,即http://localhost/app/Uploads/file.png,它应该用于将文件“file.png”从临时位置“~/Uploads/file.png”复制到另一个位置。但是,要复制此文件,我需要它的 本地路径,而我只有 URL。

【问题讨论】:

  • 您从哪里获得原始 URL?如果您只想创建指向该文件的链接,那么您将使用 Url.Content("~/Uploads/file.txt"),完全不需要完全限定的版本。
  • 原始 URL 来自 Url.Content("~/Uploads/file.txt")。但是,它是在另一个 Action 中完成的。
  • 听起来像是stackoverflow.com/questions/6081433/…的副本
  • 这里不是很清楚问题出在哪里。或许您可以详细说明您正在实施的端到端功能,以及具体哪里失败了?
  • 听起来您想将 FQDN 反转为 ~short。但是您还没有解释为什么要这样做,所以它听起来确实像XY Problem。换句话说,您认为能够做到这一点将解决一些根本问题,但您还没有描述这将解决的根本问题。很可能,这不是解决根本问题的方法

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


【解决方案1】:

你可以做这样的事情。 在你的 Razor 视图中写下这个以获得根相对路径

<script type="text/javascript">
   var baseUrl = '@Url.Content("~")';
</script>

然后在提交按钮的客户端操作中,您可以访问并将localpath 传递给控制器​​的操作方法以进行文件复制。

$("#submit").click(function () {
    var localpath = baseUrl + "Uploads/file.png";
    ...
    ...
});

这是link 给我的另一篇帖子,几乎是一个类似的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-15
    • 2016-12-16
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-29
    相关资源
    最近更新 更多