I have an image in wwwroot/img folder and want to use it in my server side code.
How can I get the path to this image in code?
The code is like this:
Graphics graphics = Graphics.FromImage(path)
By default, the wwwroot folder in the ASP.NET Core project is treated as a web root folder. Static files can be stored in any folder under the web root and accessed with a relative path to that root.
wwwroot is a Virtual Directory of IIS server. The IIS server Runs the web-site deployed on the directory.
Typically, the default Web application root for port 80 is stored at c:\inetpub\wwwroot.
Building on Daniel's answer, but specifically for ASP.Net Core 2.2:
Use dependency injection in your controller:
[Route("api/[controller]")] public class GalleryController : Controller { private readonly IHostingEnvironment _hostingEnvironment; public GalleryController(IHostingEnvironment hostingEnvironment) { _hostingEnvironment = hostingEnvironment; } // GET api/<controller>/5 [HttpGet("{id}")] public IActionResult Get(int id) { var path = Path.Combine(_hostingEnvironment.WebRootPath, "images", $"{id}.jpg"); var imageFileStream = System.IO.File.OpenRead(path); return File(imageFileStream, "image/jpeg"); } }
A concrete instance of the IHostingEnvironment is injected into your controller, and you can use it to access WebRootPath (wwwroot).
It would be cleaner to inject an IHostingEnvironment
and then either use its WebRootPath
or WebRootFileProvider
properties.
For example in a controller:
private readonly IHostingEnvironment env; public HomeController(IHostingEnvironment env) { this.env = env; } public IActionResult About(Guid foo) { var path = env.WebRootFileProvider.GetFileInfo("images/foo.png")?.PhysicalPath }
In a view you typically want to use Url.Content("images/foo.png")
to get the url for that particular file. However if you need to access the physical path for some reason then you could follow the same approach:
@inject Microsoft.AspNetCore.Hosting.IHostingEnvironment env @{ var path = env.WebRootFileProvider.GetFileInfo("images/foo.png")?.PhysicalPath }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With