首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Ktor客户端get请求获取图像/png?

如何使用Ktor客户端get请求获取图像/png?
EN

Stack Overflow用户
提问于 2022-04-23 14:02:45
回答 2查看 847关注 0票数 0

我正在尝试从客户端向我的服务器发出一个get请求。我的服务器响应具有图像/png内容类型。我怎样才能从我的kotlin密码中接收到这个图像?

EN

回答 2

Stack Overflow用户

发布于 2022-04-23 15:11:18

您将希望从Ktor服务器提供静态内容:https://ktor.io/docs/serving-static-content.html

创建一个静态文件夹,然后将图像放在其中:

代码语言:javascript
代码运行次数:0
运行
复制
static("/") {
    staticRootFolder = File("files")
}

设置好之后,您可以在该文件夹中引用文件。如果您也想要子文件夹中的文件,可以添加一个额外的files(".")行:

代码语言:javascript
代码运行次数:0
运行
复制
static("/") {
    staticRootFolder = File("files")
    files(".")
}
票数 0
EN

Stack Overflow用户

发布于 2022-04-24 02:57:27

您不仅可以下载图像,还可以下载任何其他文件。

像通常一样创建ktor-client

代码语言:javascript
代码运行次数:0
运行
复制
val client = HttpClient(OkHttp) {
    install(ContentNegotiation) {
        json(Json { isLenient = true; ignoreUnknownKeys = true })
    }
}

要使用此client下载文件,请使用bodyAsChannel()读取response,后者将响应读入为ByteReadChannel。使用copyAsChannel()在磁盘上写入数据,传递目标的ByteWriteChannel

代码语言:javascript
代码运行次数:0
运行
复制
GlobalScope.launch(Dispatchers.IO) {
    val url = Url("FILE_DOWNLOAD_LINK")
    val file = File(url.pathSegments.last())
    client.get(url).bodyAsChannel().copyAndClose(file.writeChannel())
    println("Finished downloading..")
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71980361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档