#android #retrofit
Вопрос:
Загрузка файла в amazon S3. С помощью PUT, без нескольких частей, с динамическим URL-адресом, проблема с кодировкой URL-адреса, файл поврежден.
Ответ №1:
Я много борюсь, Есть ответы, но они распределены здесь и там. Это заняло у меня полтора дня, поэтому я вставляю решение здесь. Чтобы другие могли сэкономить свое время.
@PUT() fun uploadDocument( @Url upload_url: Строка, заголовки @HeaderMap: Карта<Строка, Строка>, @Тело запроса: Тело запроса<Строка, Строка>
): Вызов
headerMap.put(«Тип содержимого», «приложение/msword»)
- чтение файла:
val InputStream = активы.открыть(«testdoc.docx») // чтение файла из актива
var size = inputStream.available()
val buffer = ByteArray(size)
var bytesRead: Int
val output = ByteArrayOutputStream()
while (inputStream.read(buffer).also { bytesRead = it } != -1) {
output.write(buffer, 0, bytesRead)
}
val byteArray = output.toByteArray()
val requestBody=
RequestBody.create(MediaType.parse("application/msword"), byteArray)
- зовущий:
JMAServiceInstance.serviceInterfaceForDoc.uploadDocument(
Utils.upload_Url,карта заголовка,тело запроса)
// Следует помнить : Не используйте @Path, Url-адрес будет зашифрован, и вы получите неверную ошибку запроса. непосредственно используйте @Url внутри функции.