1

我有一个多平台项目,其中 api 代码在 iOS 和 Android 之间共享。

有“put” api 可以将本地音频文件作为二进制文件上传。

我创建了httpclient如下

 val client = HttpClient {
        defaultRequest {
            url {
                protocol = ServiceConfiguration.protocol
                host = ServiceConfiguration.baseUrl
                port = ServiceConfiguration.port
            }
            contentType(ContentType.Application.Json)
        }



        install(JsonFeature) {
            val json = kotlinx.serialization.json.Json {
                ignoreUnknownKeys = true
                isLenient = true
            }
            serializer = KotlinxSerializer(json)
        }
    }

要将对象放入api中,我正在执行以下操作

val response = ServiceRequest.client.put<String>(
                body = File(path).readBytes()
            )

它工作正常并将字节数组上传到后端。但是我想将文件作为普通二进制文件上传,而不是字节数组。

为了更清楚,在 Postman mac 应用程序中,我们可以将文件作为二进制文件上传。我需要做类似的事情。

当我签入 Ktor 时,它显示只能以二进制形式提交多部分表单数据。但在我的情况下,它是 Put 请求。

请帮忙。

4

1 回答 1

0

看起来没有直接的方法可以使用 Ktor 将文件作为二进制文件。

我不得不采用平台相关的方法,比如 Android 的 OkHttpClient 和 iOS 的 URLSession。

于 2021-08-24T08:28:27.333 回答