我正在尝试使用Spark框架(Kotlin)将文件上传到服务器。问题是当我尝试访问部件时,请求对象返回空值。
我尝试了Internet上的所有解决方案,但没有用。我尝试使用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()
什么也不输出。