我正在尝试上传一张图片到一个声称能够以“标准方式”接收文件的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()
})
主要的“主体”部分是通过“block”参数传递的一些JSON数据。这些数据被安全地传递到了目的地。
但是图像本身的二进制数据可能没有显示在服务器端,或者被服务器忽略,因为我没有适当设置一些“键”值。
这是否是使用Ktor上传文件的正确方式?如果不是,我做错了什么?