【问题标题】:.net core web API,static file images not loading properly?.net 核心 Web API,静态文件图像无法正确加载?
【发布时间】:2020-07-21 23:34:55
【问题描述】:

我有 .net 核心网络 API 项目。我想在这个项目中放一些静态图像。我在启动文件中有以下代码

var provider = new FileExtensionContentTypeProvider();
// Add new mappings
provider.Mappings[".myapp"] = "application/x-msdownload";
provider.Mappings[".htm3"] = "text/html";
provider.Mappings[".image"] = "image/png";
provider.Mappings[".png"] = "image/png";
// Replace an existing mapping
provider.Mappings[".rtf"] = "application/x-msdownload";
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
   FileProvider = new PhysicalFileProvider(
   Path.Combine(Directory.GetCurrentDirectory(), @"MyStaticFiles")),
   RequestPath = new PathString("/StaticFiles"),
   ContentTypeProvider = provider
});   

当我运行或部署这个 Web 项目时,我检查了它下面有 StaticFiles 文件夹有 test.png 当我浏览 test.tt/StaticFiles/test.png 或 test.tt/wwwroot/StaticFiles/test.png 或 test.tt/wwwroot/StaticFiles/images/test.png

浏览器没有加载该图像,它正在显示白页,我在 F12 的网络控制台上检查,它正在提供文档和 json 类型的响应。 我的问题是图像没有显示,我尝试了更多图像但没有帮助。我确定我的路径中有图像,文件夹。

你能告诉我如何浏览 test.png,直接点击路径来获取静态文件 .net 核心 WEB API 图像吗?

【问题讨论】:

    标签: asp.net-core-2.0 asp.net-core-webapi asp.net-core-2.1 asp.net-core-2.2


    【解决方案1】:

    默认情况下,静态文件进入项目根目录中的wwwroot。调用app.UseStaticFiles(),会导致此目录在站点的基本路径中提供服务,即/。因此,wwwroot/images/test.png 之类的文件可以在 /images/test.png 获得(注意:没有 wwwroot 部分)。

    我不确定您在此处使用此代码的其余部分在做什么,但您实际上是在 [project root]/MyStaticFiles 添加了一个附加服务目录,然后它将是服务于/StaticFiles。因此,首先,test.png 必须实际位于 MyStaticFilesnot wwwroot,然后您可以通过请求 /StaticFiles/test.png 来访问。

    但是,不需要这个其他目录。如果你只是想添加一些额外的媒体类型,你可以通过:

    services.Configure<StaticFileOptions>(o =>
    {
        var provider = new FileExtensionContentTypeProvider();
        provider.Mappings.Add(".myapp", "application/x-msdownload");
        // etc.
        o.ContentTypeProvider = provider;
    });
    

    然后只需使用:

    app.UseStaticFiles();
    

    没有其他要求。

    【讨论】:

    • @chriss-pratt ,chriss-pratt ,感谢这次更新。实际上我已经尝试过使用 app.UseStatisFiles() 然后将文件移动到 wwwroot/images/png 的方法,但是现在当我尝试使用正确的 imge 正确的文件,然后我从我的路径浏览时,它正在显示白页,并且不显示图像,我检查内容类型返回的是文档,我认为如果它开始返回类型图像,那么可能是图像开始加载。我已经尝试过您的解决方案,顺便说一句,我正在使用 .net core web api 项目..您能帮我解决一下吗?
    猜你喜欢
    • 2019-06-08
    • 2020-11-30
    • 2021-12-19
    • 2018-09-01
    • 2016-12-30
    • 2018-06-02
    • 1970-01-01
    • 2019-10-25
    • 1970-01-01
    相关资源
    最近更新 更多