Kon*_*ten 0 c# asp.net-apicontroller asp.net-core
在我的解决方案中,我直接在根目录中Startup.cs文件旁边有一个名为beep.png的文件。我将其属性更改为始终复制。我激活了UseFileServer并选择浏览目录结构以确定。
但是,当我运行代码时Image.FromFile("beep.png");,我只收到找不到文件的错误。
System.IO.FileNotFoundException
Message=C:\Program Files\IIS Express\beep.png
如何才能使该文件可供访问?
用于IWebHostEnvirounment获取根内容路径(技术上是项目文件夹),或获取 Web 根路径(项目文件夹下的 wwwroot 文件夹)。
_hostingEnvirounment.ContentRootPath将返回:
D:\Hosting\ProjectFolder
_hostingEnvirounment.WebRootPath将返回:
D:\Hosting\ProjectFolder\wwwroot
所以就你的情况而言;注入IWebHostEnvirounment您的控制器,然后获取内容根文件夹,如下所示:
public class MyApiController : ControllerBase {
private readonly IWebHostEnvirounment _hostingEnvirounment;
public MyApiController(IWebHostEnvironment 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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2653 次 |
| 最近记录: |