Как передать ByteArray в контроллер Spring Boot?
Хочу передать файл в виде массива байтов в контроллер. Код функции контроллера:
@PostMapping("/file")
fun convertFile(data: ByteArray?): ResponseEntity<ByteArray> {
if (data != null && data.isNotEmpty()) {
val retVal: ByteArray = someFunction(data)
return ResponseEntity
.ok()
.body(retVal)
}
return ResponseEntity
.noContent()
.build()
}
Код теста:
@Test
fun testF1() {
val fileByteArray = FileSystemResource("E:/test.pdf").inputStream.readBytes()
val requestEntity = RequestEntity.post("/api/v1/file")
.body(
LinkedMultiValueMap<String, Any>().apply {
add("data", fileByteArray)
}
)
val answer = testRestTemplate.exchange(requestEntity, ByteArray::class.java)
}
Из теста уходит 53614 байт, в контроллер приходит 50920. В чем может быть проблема? Или, если рассматривать вопрос с другой стороны, как корректно передавать ByteArray в такой ситуации?
Ответы (1 шт):
Автор решения: he1ex-tG
→ Ссылка
Сделал так: "положил" ByteArray в класс-обертку
class MyClass(
val content: ByteArray,
)
Тип запроса Application/JSON. В теле запроса передаю экземпляр класса.