我在将图像上传到服务器时遇到了几个问题。 然后,我使用kotlin暂停函数来实现管道。 但是我遇到了以下服务器错误。 my errors
这是我的代码。
fun Route.customerUploadImage() {
logger.info { "Receiveing Image request" };
post("/me/image") {
logger.info { "Receiveing Image POST request" };
call.customerService.saveProfileImage(call.receiveMultipart(), loggedUser().userId!!)
call.respondStatus(HttpStatusCode.Accepted)
}
这是customerService()中的customerUploadImage代码。
suspend fun saveProfileImage(multipart: MultiPartData, userId: Long) {
logger.info { "Receving Image Request!!!!" }
multipart.forEachPart { part ->
(part as? PartData.FileItem)?.run {
logger.info { this.headers.get("Content-Type") }
logger.info { "save image, name: $name, file name: $originalFileName" }
val imageName = allowedProfileImages.firstOrNull { it == name } ?: throw AppException(ErrorCode.INVALID_IMAGE_NAME)
bao.put(streamProvider(), "profile/$userId-${imageName.toLowerCase()}", blobContentType).also { resourceUrl ->
logger.info { "resourceUrl - $resourceUrl" }
dao.get(Customer::class, userId)?.also { customer ->
logger.info { "customer - $customer" }
dao.put(customer.copy(images = setOf(resourceUrl, *customer.images.toTypedArray())))
}
}
}
part.dispose()
}
}
我发现服务器无法接收带有日志信息的上载图像文件。 那么如何解决这些错误?
答案 0 :(得分:1)
我发现上述问题的主要原因。 由于“内容类型”设置为“ application / json”,因此服务器不会执行此数据。 所以我删除了标题中的“ Content-type”选项。 它运作良好。 原始代码。
headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json'
},
现在
headers: {
'Accept': 'application/json'
},