Хорошо, думал, что я добавлю свой собственный ответ для всех, кто использует Kotlin, также это правильный ответ, если вам нужно иметь список имен файлов / изображений, как и остальные данные формы . Принятый ответ сработает, если вам это не нужно, но в моем случае он не сработал, так как он должен был быть под files[]
.
Службой модернизации (просто простое поле @Body body: RequestBody
, и удалить @Multipart)
@POST("exampleendpoint/{id}")
fun uploadDocuments(@Path("id") id: String, @Body body: RequestBody): Response<Unit>;
Затем вам нужно построить полную RequestBody, включая все, что вам нужно, например, как показано ниже:
val requestBody = MultipartBody.Builder().setType(MultipartBody.FORM).apply {
addFormDataPart("type", "booking")
addFormDataPart("user", "username")
addFormDataPart("message", "message text goes here")
addFormDataPart("contact_number", "0123456789")
addFormDataPart("contact_email", "email@address.com")
// my files are List<ByteArray>, okhttp has a few utility methods like .toRequestBody for various types like below
files.forEachIndexed { index, bytes ->
addFormDataPart("files[]", "$index.jpg", bytes.toRequestBody("multipart/form-data".toMediaTypeOrNull(), 0, bytes.size))
}
}.build()
service.uploadDocuments("uploadId", requestBody)