在我的解决方案中,我的根目录中直接在 Startup.cs 文件旁边,有一个名为 beep.png 的文件。我将其属性更改为始终复制。我激活了 UseFileServer 并选择浏览以确保目录结构。
但是,当我运行代码Image.FromFile("beep.png");
时,只会收到未找到文件的错误。
System.IO.FileNotFoundException
Message = C:\ Program Files \ IIS Express \ beep.png
如何使文件可访问?
答案 0 :(得分:2)
使用IHostingEnvirounment
获取根目录内容路径(技术上是项目文件夹),或获取Web根目录路径(项目文件夹下的wwwroot文件夹)。
_hostingEnvirounment.ContentRootPath
将返回:
D:\ Hosting \ ProjectFolder
_hostingEnvirounment.WebRootPath
将转向:
D:\ Hosting \ ProjectFolder \ wwwroot
因此,在您的情况下;将IHostingEnvirounment
注入您的控制器,然后获得内容根文件夹,如下所示:
public class MyApiController : ControllerBase {
private readonly IHostingEnvirounment _hostingEnvirounment;
public MyApiController(IHostingEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
// get image from project root folder \ProjectFolder\
public Image GetImageFromContentRoot(string name) {
// e.g.: imgPath = "D:\\Hosting\\ProjectFolder\\beep.png"
var imgPath = Path.Combine(_hostingEnvirounment.ContentRootPath, name);
return Image.FromFile(imgPath);
}
//get image from projects wwwroot folder
public Image GetImageFromWebRoot(string name) {
// e.g.: imgPath = "D:\\Hosting\\ProjectFolder\\wwwroot\\beep.png"
var imgPath = Path.Combine(_hostingEnvirounment.WebRootPath, name);
return Image.FromFile(imgPath);
}
}