खैर में एक अपलोड की गई छवि प्रदर्शित, इस नौसिखिया कुछ गलत कर रहा है जब सर्वर पर अपलोड चित्रों का प्रदर्शन:MVC 3 उस्तरा
मॉडल:
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
public string ImageUrl { get; set; }
}
नियंत्रक (अपलोड - द्वारा कहा जाता है [HttpPost] public ActionResult बनाएं):
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));
}
बनाने दृश्य:
...
@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>
}
अब तक तो अच्छा, छवि फ़ोल्डर में अपलोड किया जाता है और यूआरएल
सहेजा गया है अब, मैं विस्तार से देखें में यह देखना चाहते हैं
विवरण दृश्य:
<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" />
लेकिन तथ्य यह है कि पाठ को छोड़कर स्क्रीन पर कुछ भी नहीं दिखाई देता है "IMAG ई "।
मैं क्या गलत कर रहा हूं?
पीएस मैंने सर्वर के बिना कोशिश की है। मैपपाथ, सापेक्ष पता "~ \ App_Data \ अपलोड \ Fotos_nofoto.jpg" का उपयोग करके और परिणाम वही है।
--- संपादित करें ---
@ kmcc049:
@Html.MyImage(Model.ImageUrl)
उत्पन्न कोड: मैं एक सहायक
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));
}
}
ध्यान में रखते हुए कॉल बनाने अपने सुझाव की कोशिश की है
<img alt="[IMAGE]" src="/App_Data/Uploads/Fotos/_nofoto.jpg" />
लेकिन res ULT एक ही है: कोई छवि :(
--- हल ---
जाहिर App_Data क्योंकि उन्हें एक्सेस करने में त्रुटि 403 परिणाम होगा अपलोड की गई फ़ाइलों को बचाने के लिए एक अच्छा स्थान नहीं है - निषिद्ध। मैं फ़ाइलों को ~/अपलोड/फोटो में ले जाता हूं और यह काम करता है।
img टैग एक हार्ड डिस्क यूआरएल है, और नहीं एक http ... –