哪种 Ktor 方法是正确的 - append() 或 buildPacket()?

Posted

技术标签:

【中文标题】哪种 Ktor 方法是正确的 - append() 或 buildPacket()?【英文标题】:Which Ktor method is correct -- append() or buildPacket()? 【发布时间】:2021-12-30 15:47:20 【问题描述】:

我正在尝试将图像文件上传到服务器,并且一直在使用此方法将二进制文件字节“附加”到消息中。 'srcBitmap' 是一个包含图像字节的 byteArray。

    formData = formData 
        append("image", srcBitmap, Headers.build 
            append(HttpHeaders.ContentType, "image/jpg")
            append(HttpHeaders.ContentDisposition, "filename=image.jpg")
                )

在网络上的其他示例中,他们就是这样做的。

    formData 
        appendInput(key = ICON_FILE_PART, headers = Headers.build 
            append(HttpHeaders.ContentDisposition, "filename=$appId_ic")
        ) 
            buildPacket  writeFully(icon.toByteArray()) 
        
    ) 

这两种方式(追加与'buildPacket')有什么区别?为什么要使用一个而不是另一个?

【问题讨论】:

【参考方案1】:

这些只是制作多部分二进制部分的不同方法。使用buildPacket,您可以构建任意字节数据包而不知道它们的大小。如果您需要从文件创建二进制部分,那么我建议使用第一个选项,因为它简单易懂。

【讨论】:

以上是关于哪种 Ktor 方法是正确的 - append() 或 buildPacket()?的主要内容,如果未能解决你的问题,请参考以下文章

Ktor 的 HttpClient 使用的正确模式

响应 Ktor 中图像的缓存标头

使用 KDoc 记录 Ktor 路由

哪种是计算图像点数的正确方法?

哪种方法对初始化 wchar_t 字符串是正确的?

培训批次:哪种Tensorflow方法是正确的?