当我寻找更多将图像上载到服务器的方法时,我发现其中描述了Multipart方法的教程。我很好奇为什么分段比简单的原始二进制上传更好?
答案 0 :(得分:0)
一段时间后,我遇到了与将数据作为标头(参数除外)发送相关的重大问题。默认情况下,OkHttp 不允许在标头中使用非 ASCII 字符。它导致崩溃,可以通过以不安全的方式添加标题来修复:
private fun createHeaders(dataHeader: FileUploadDataHeader): Headers =
Headers.Builder()
.add(UPLOAD_HEADER_COMMAND, UPLOAD_HEADER_COMMAND_VALUE)
.add(HEADER_TOKEN_NAME, userSettings.sessionUser.uuid)
.addUnsafeNonAscii(UPLOAD_HEADER_DATA, dataHeader.toString())
.build()
最好使用 Multipart 请求,或者至少编码非 ASCII 值,然后在服务器上对其进行解码。但这需要与服务器端开发人员协作,而这并不总是可行的。