【问题标题】:How to map URL path to physical path in asp.net website如何将 URL 路径映射到 asp.net 网站中的物理路径
【发布时间】:2019-01-05 17:46:22
【问题描述】:

我的 ASP.NET MVC 网站的根目录中有一个 ImageUpload 文件夹,在 Windows 上运行并托管在 AWS 上。

显示图像时,我需要这样的东西:

<img src="/ImageUpload/MyImage.jpg" alt="">

上传图片时,我需要物理路径...

string fullPath = System.IO.Path.Combine("C:\\MyWebsiteRoot\\ImageUpload",  MyImage.jpg);
file.SaveAs(fullPath);

我想把路径放在我的 web.Config 中:

<!-- if I use a url path, the save won't work -->
<add key="ImageUploadPath" value="/ImageUpload"></add>

<!-- if I use physical path, the display won't work -->
<add key="ImageUploadPath" value="C:\\MyWebsiteRoot\\ImageUpload"></add>

是否可以在 Web.Config 中定义 ImageUpload 路径,使其既可以用作物理路径又可以用作 url 路径?还是我需要在我的 Web.Config 中定义 2 个不同的变量?

【问题讨论】:

  • 问题是什么?
  • 你试过了吗:?使用 , "~/" IIS express 解析物理路径
  • 我想在我的 WebConfg 中定义 ImageUpload 路径。如何将它同时用作物理路径和 url 路径?
  • 您不应该使用图像 src 的物理目录位置。只需像您所做的那样使用相对网址。
  • @Shyju,谢谢。所以如果我使用:/ImageUpload,file.SaveAs() 怎么知道物理位置在哪里?

标签: asp.net asp.net-mvc image url path


【解决方案1】:

您可以在应用设置中存储您的图像文件夹(存在于您的应用根目录中)名称,并使用它来保存和渲染图像

<add key="ImageUploadPath" value="ImageUpload"></add>

当你保存上传的文件时,读取这个值并使用它来构建路径。您可以创建一个类似"~/ImageUploadPath" 的字符串并将其传递给Server.MapPath 方法,该方法将返回与您传递给它的虚拟路径相对应的物理文件路径。

var fileName = "yourImageFileName.jpg";
var directory = ConfigurationManager.AppSettings["ImageUploadPath"];
var path = Path.Combine(Server.MapPath("~/" + directory), fileName);
model.Image.SaveAs(path);

在渲染图片时,使用同样的方法读取目录名,渲染图片src值。

例如,

public ActionResult Profile(int userId)
{
    var user = db.Users.Find(userId);
    var vm = new UserProfileVm { FirstName = user.FirstName , Id = user.Id };
    vm.ProfileImage = GetImagePath(vm.ImagePath);
    return View(vm);
}
private string GetImagePath(string imageName)
{
   return ConfigurationManager.AppSettings["ImageUploadPath"] + "/" + imageName;
}

在你看来,

@model UserProfileVm
<img src="~/@Model.ProfileImage" alt="@Model.FirstName" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    相关资源
    最近更新 更多