如何在我的 WebAPI .NET Core 运行时从光盘读取文件
How do I read in a file from disc during runtime in my WebAPI .NET Core
在我的解决方案中,我在根目录中有一个名为 beep.png 的文件,就在 Startup.cs[=22= 旁边] 文件。我将其属性更改为 always copy。我激活了 UseFileServer 并选择浏览目录结构以确保安全。
但是,当我 运行 代码 Image.FromFile("beep.png");
时,我只得到找不到文件的错误。
System.IO.FileNotFoundException
Message=C:\Program Files\IIS Express\beep.png
如何使文件可访问?
使用IHostingEnvirounment
获取内容根路径(技术上是项目文件夹),或获取网站根路径(项目文件夹下的wwwroot文件夹)。
_hostingEnvirounment.ContentRootPath
将 return:
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);
}
}
在我的解决方案中,我在根目录中有一个名为 beep.png 的文件,就在 Startup.cs[=22= 旁边] 文件。我将其属性更改为 always copy。我激活了 UseFileServer 并选择浏览目录结构以确保安全。
但是,当我 运行 代码 Image.FromFile("beep.png");
时,我只得到找不到文件的错误。
System.IO.FileNotFoundException
Message=C:\Program Files\IIS Express\beep.png
如何使文件可访问?
使用IHostingEnvirounment
获取内容根路径(技术上是项目文件夹),或获取网站根路径(项目文件夹下的wwwroot文件夹)。
_hostingEnvirounment.ContentRootPath
将 return:
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);
}
}