Ktor 无法正确提供静态图片

Ktor not serving static images properly

我有一个 ktor 服务器,我正在尝试提供一些存储在资源文件夹 assets.

中的静态资产
static("/assets") {
    resources("assets")
}

对于 .css 文件,当我用 http://0.0.0.0:7200/assets/css/main.css 之类的东西获取它们时它可以工作,但是当我尝试使用 http://localhost:7200/assets/img/flags/uk.png 获取图像时,它 returns 一个损坏的图像,尽管它存在。

我尝试过不同的图像格式和路径。还尝试了不同的资源服务方式,但 none 奏效了。

编辑(从浏览器下载图片的开头):

编辑(原始文件的开头,为什么它们略有不同?):

终于找到问题了。跟Ktor无关,跟Gradle有关。让我解释。 我的 build.gradle.kts 文件中有此配置:

tasks.processResources {
    from(sourceSets["main"].resources.srcDirs)
    into("$buildDir/resources/main")
    duplicatesStrategy = DuplicatesStrategy.INCLUDE

        filter(
            ReplaceTokens::class, "tokens" to mapOf(
                "BUILD_VERSION" to version,
                "BUILD_DATE" to DateTimeFormatter.ISO_DATE_TIME.format(ZonedDateTime.now()),
                "BUILD_MACHINE" to InetAddress.getLocalHost().hostName
            )
        )
}

出于某种原因,它弄乱了图像。解决方案,只对我想要的文件应用处理,在本例中,只应用 application.conf。所以我现在有了它,它不会破坏资源中的图像文件:

tasks.processResources {
    from(sourceSets["main"].resources.srcDirs)
    into("$buildDir/resources/main")
    duplicatesStrategy = DuplicatesStrategy.INCLUDE

    filesMatching("application.conf") {
        filter(
            ReplaceTokens::class, "tokens" to mapOf(
                "BUILD_VERSION" to version,
                "BUILD_DATE" to DateTimeFormatter.ISO_DATE_TIME.format(ZonedDateTime.now()),
                "BUILD_MACHINE" to InetAddress.getLocalHost().hostName
            )
        )
    }
}

感谢大家愿意提供帮助。