如何解决这些错误,以将一些文件上传到与Kotlin暂停功能相关的服务器?

时间:2019-04-24 11:28:41

标签: kotlin

我在将图像上传到服务器时遇到了几个问题。 然后,我使用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()
    }
}

我发现服务器无法接收带有日志信息的上载图像文件。 那么如何解决这些错误?

1 个答案:

答案 0 :(得分:1)

我发现上述问题的主要原因。 由于“内容类型”设置为“ application / json”,因此服务器不会执行此数据。 所以我删除了标题中的“ Content-type”选项。 它运作良好。 原始代码。

headers: {
    'Content-Type': 'multipart/form-data',
    'Accept': 'application/json'
  },

现在

headers: {
    'Accept': 'application/json'
  },