gpt4 book ai didi

asp.net-mvc-3 - 在 MVC 3 Razor 中显示上传的图像

转载 作者:行者123 更新时间:2023-12-01 19:52:32 24 4
gpt4 key购买 nike

嗯,这个新手在显示上传到服务器的图像时做错了一些事情:

型号:

public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public string ImageUrl { get; set; }
}

Controller (上传 - 由 [HttpPost] public ActionResult Create 调用):

public void Upload(Person person)
{
var image = WebImage.GetImageFromRequest();
var filename = Path.GetFileName(image.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/Uploads/Fotos"), filename);
image.Save(path);
person.ImageUrl = Url.Content(Path.Combine("~/App_Data/Uploads/Fotos", filename));
}

创建 View :

...
@using (Html.BeginForm("Create", "Person", FormMethod.Post, new { @encType = "multipart/form-data" }))
{
...
@FileUpload.GetHtml(initialNumberOfFiles: 1, allowMoreFilesToBeAdded: false, includeFormTag: false, uploadText: "image")
...
<div>
<input type="submit" value="Create" /> |
@Html.ActionLink("Back", "Index")
</div>
}

到目前为止,一切顺利,图像已上传到文件夹并保存了网址

现在,我想在详细 View 中看到它

详细 View :

<div class="display-foto">
<img src="@Url.Content(Server.MapPath(Model.ImageUrl))" alt="IMAGE" />
</div>

查看生成的代码,一切似乎都没问题:

<img src="D:\Users\x\Documents\Visual Studio 2010\Projects\CMI_AD\CMI_AD\App_Data\Uploads\Fotos\_nofoto.jpg" alt="IMAGE" />

但事实是,除了文本“IMAGE”之外,屏幕上什么也没有出现。

我做错了什么?

附注我尝试过不使用 Server.MapPath,使用相对地址“~\App_Data\Uploads\Fotos_nofoto.jpg”,结果是相同的。

--- 编辑 ---

@kmcc049:我已经尝试过您创建助手的建议

public static class MyHelpers
{
public static IHtmlString MyImage(this HtmlHelper htmlHelper, string url)
{
var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext);
var img = new TagBuilder("img");
img.Attributes["alt"] = "[IMAGE]";
img.Attributes["src"] = UrlHelper.GenerateContentUrl(url, htmlHelper.ViewContext.HttpContext);
return MvcHtmlString.Create(img.ToString(TagRenderMode.SelfClosing));
}
}

View 中的调用:

@Html.MyImage(Model.ImageUrl)

生成的代码是

<img alt="[IMAGE]" src="/App_Data/Uploads/Fotos/_nofoto.jpg" />

但结果是一样的:没有图像:(

--- 已解决 ---

显然 App_Data 不是保存上传文件的好位置,因为访问它们将导致错误 403 - 禁止。我将文件移动到 ~/Uploads/Fotos 并且它有效。

最佳答案

这不是有效的 HTTP 路径。这是您计算机上文件夹的路径。

尝试使用 UrlHelper.GenerateContentUrl() 方法 http://msdn.microsoft.com/en-us/library/system.web.mvc.urlhelper.generatecontenturl.aspx

关于asp.net-mvc-3 - 在 MVC 3 Razor 中显示上传的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7321383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com