KMP项目中用Ktor上传相机ByteArray报错:缺少请求部件'file'
KMP项目图片上传报错解决
我在KMP项目中从相机获取了ByteArray,尝试上传到服务器时使用了以下代码:
val response = client.post(url) { setBody( MultiPartFormDataContent( formData { if (byteArrays != null) { append("image", byteArrays, Headers.build { append(HttpHeaders.ContentType, "image/png") append(HttpHeaders.ContentDisposition, "filename=${name}") }) } }, ) ) onUpload { bytesSentTotal, contentLength -> println("Sent $bytesSentTotal bytes from $contentLength") } }
但运行后报错:"缺少必需的请求部分'file'"
问题原因
服务器端要求的表单字段名是file,但代码里使用的字段名是image,字段名不匹配导致服务器无法识别上传的文件。
解决方法
将表单字段名从image改为file即可,同时建议给文件名加上双引号,避免特殊字符引发解析问题:
val response = client.post(url) { setBody( MultiPartFormDataContent( formData { if (byteArrays != null) { append("file", byteArrays, Headers.build { append(HttpHeaders.ContentType, "image/png") append(HttpHeaders.ContentDisposition, "filename=\"${name}\"") }) } }, ) ) onUpload { bytesSentTotal, contentLength -> println("Sent $bytesSentTotal bytes from $contentLength") } }
内容的提问来源于stack exchange,提问作者herz88888888
相关产品推荐
相关产品推荐

