如何使用 ktor 上传单个位图图像?

Bun*_*les 5 android http kotlin android-studio ktor

我正在尝试将图像上传到 http 服务器,该服务器据称以“标准方式”接受文件,无论这意味着什么。我将互联网上的一堆示例合并到这个解决方案中,每个示例都实现了我想要的一小部分。

'srcBitmap' is a byteArray containing the JPG data.

val response: HttpResponse = httpClient.submitFormWithBinaryData(
    url = URLUploadFile,
    formData = formData {
        append("bitmapName", "image.jpg")
        append("image", srcBitmap, Headers.build {
            append(HttpHeaders.ContentType, "image/jpg")
            append(HttpHeaders.ContentDisposition, "filename=image.jpg")
        })
    },
    block = {
        headers {
            append(HttpHeaders.ContentType, contentTypeString)
            append(HttpHeaders.CacheControl, "no-cache")
            append("my-app-authtoken", PREFKEY_AUTHTOKEN)
            append("my-app-id", PREFKEY_USERID)
        }
        contentType(ContentType.Application.Json)
        body = jsonBody.toString()
    })

Run Code Online (Sandbox Code Playgroud)

主要的“body”部分是一些在“block”参数中传递的 json。该数据已按预期安全到达。

但是图像本身的二进制数据要么没有显示在服务器端,要么被服务器忽略,因为我没有适当设置一些“键”值。

这是使用 Ktor 上传文件的正确方法吗?如果不是,我做错了什么?

Ale*_*man 0

image第二个追加调用是发送具有 name和 filename 的部分的正确方法image.jpg。问题是您无法在一个请求中同时发送application/jsonmultipart/form-data内容。