یک موضوعی رو میخواستم مطرح کنم :
طبق یکی از مقالات سری ASP.net MVC سایت با استفاده از Controller فایلهای آپلود شده رو با یک کلید ،خروجی میداد.
بنده همین موضوع رو در تکنولوژی جدید پیاده سازی کردم اما با مشکل عدم نمایش فایل یا تصویر در خروجی مواجه شدم
موجود بودن فیزیکی فایل هم در مسیر wwwroot/StaticImages/ و هم مسیر MyStaticImages/ :
اما در نمایش چه ادرس مستقیم و چه تگ <img> خطای زیر نمایش داده میشود :
هر دو مسیر تست شده با قطعه کد زیر ، اما خطا مشابه میباشد
چه این گزینه hostingEnvironment.WebRootPath_
و چه این گزینه hostingEnvironment.ContentRootPath _
طبق یکی از مقالات سری ASP.net MVC سایت با استفاده از Controller فایلهای آپلود شده رو با یک کلید ،خروجی میداد.
بنده همین موضوع رو در تکنولوژی جدید پیاده سازی کردم اما با مشکل عدم نمایش فایل یا تصویر در خروجی مواجه شدم
موجود بودن فیزیکی فایل هم در مسیر wwwroot/StaticImages/ و هم مسیر MyStaticImages/ :
و نحوه آدرس دهی :
<img src='@Url.Action("DownloadFile", "ImageHandler", new {Area = "", id = item.BaseFileGuids, imgSize = ImageHandlerController.ImgSize.M})' alt=""/>
مسیر به درستی نمایش داده شده و فایل هم پس از بررسی توسط : System.IO.File.Exists = true میباشد.
اما در نمایش چه ادرس مستقیم و چه تگ <img> خطای زیر نمایش داده میشود :
هر دو مسیر تست شده با قطعه کد زیر ، اما خطا مشابه میباشد
چه این گزینه hostingEnvironment.WebRootPath_
و چه این گزینه hostingEnvironment.ContentRootPath _
public IActionResult DownloadFile([FromRoute]string id, [FromQuery] ImgSize imgSize) { var result = _baseFileService.GetFileNameAndFileNameOnDsAndFileType(id); if (result == null) return View("Error"); var fileName = result.Item1; string userAgent = Request.Headers["User-Agent"]; if (IsInternetExplorer(userAgent)) { var htencode = HtmlEncoder.Create(); var attachment = string.Format("attachment; filename=\"{0}\"", htencode.Encode(fileName)); _httpContext.HttpContext.Response.Headers.Add("Content-Disposition", attachment); } var rootPath = Path.Combine(_hostingEnvironment.WebRootPath, _settingsAppPathConfig.Value.ServerImagesRootPath); var filepath = Path.Combine(rootPath, imgSize.ToString().ToLower(), result.Item2); if (!System.IO.File.Exists(filepath)) { const string notFoundImage = "notFound.jpg"; var notFoundpath = Path.Combine(rootPath , notFoundImage); string contentType; new FileExtensionContentTypeProvider().TryGetContentType(notFoundImage, out contentType); return File(notFoundpath, contentType, notFoundImage); } string contentTypebase; new FileExtensionContentTypeProvider().TryGetContentType(result.Item3, out contentTypebase); return File(filepath, contentTypebase, fileName); }