如何在我的 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);
    }
}