Я пытаюсь загрузить файл на сервер, используя Spark Framework (Kotlin).Проблема в том, что объект запроса возвращает нулевое значение, когда я пытаюсь получить доступ к частям.
Я перепробовал все решения в интернете, но они не сработали.Я пытался использовать загрузку файлов Apache Commons, но у меня тоже ничего не вышло.
Вот запрос на стороне клиента:
fun uploadFile(file: FormData, onSuccess: (XMLHttpRequest) -> Unit, onError: () -> Unit){
val xmlHttp = XMLHttpRequest()
val url = "api/admin/v1/events/upload"
xmlHttp.open(HTTP_POST_VERB, "$BASE_URL$url", true)
xmlHttp.setRequestHeader("Authorization", "$accessToken")
xmlHttp.setRequestHeader("Content-Type", "multipart/form-data")
xmlHttp.onerror = { onError() }
xmlHttp.onload = { onSuccess(xmlHttp) }
xmlHttp.send(file)
}
На стороне сервера:
post("/events/upload") { req, res ->
val location = "images"
val maxFileSize: Long = 100000000
val maxRequestSize: Long = 100000000
val fileSize = 1024
val multipartConfigElement = MultipartConfigElement(location, maxFileSize, maxRequestSize, fileSize)
req.raw().setAttribute("org.eclipse.jetty.multipartConfig", multipartConfigElement)
req.raw().parts.forEach {
println(it.name)
println(it.size)
println(it.submittedFileName)
}
}
Когда я отправляю запрос, он ничего не выводит.
Это вывод регистратора (только первые строки):
INFO 2019-04-20 22:28:09,058 [qtp1059738358-16] (Logger.kt:12) - POST http://localhost:8030/api/admin/v1/events/upload ------WebKitFormBoundaryzUL5QI9Jk5oA8yzP
Content-Disposition: form-data; name="uploaded-file"; filename="manifold.jpg"
Content-Type: image/jpeg
���� JFIF �� C
%# , #&')*)-0-(0%()(�� C
Как видно, запрос очень хорошо распознается в регистраторе, но в коде он неРабота.Кроме того, я попытался опубликовать файл с помощью почтальона, и это не сработало.Кроме того, request.contentType()
выводит multipart/form-data
, а request.body()
ничего не выводит.