如何解决Micronaut 分段上传 - 错误:“未指定必需参数 [CompletedFileUpload]”
我正在尝试使用 Micronaut 上传多部分文件但没有成功。
我收到带有消息的 400 状态代码:“未指定必需参数 [CompletedFileUpload 文件]”。
curl -v -F "file=@image.jpg" localhost:8080/test/param1/param2
如何使其与 CompletedFileUpload 一起使用?
科特林:
@Controller("/test")
class DemoController(private val fileService: FileService) {
@Post(
"/{param1}/{param2}",consumes = [MULTIPART_FORM_DATA],produces = [TEXT_PLAIN]
)
@ExecuteOn(TaskExecutors.IO)
fun post(
file: CompletedFileUpload,param1: String,param2: String
) : HttpResponse<String>{
println(file.contentType)
fileService.uploadFile("fileName",file.inputStream)
return HttpResponse.ok("Uploaded")
}
解决方法
以下 Java 代码适用于我(Windows cURL + Micronaut 2.5.4):
package com.example;
import io.micronaut.http.HttpResponse;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Post;
import io.micronaut.http.multipart.CompletedFileUpload;
import io.micronaut.scheduling.TaskExecutors;
import io.micronaut.scheduling.annotation.ExecuteOn;
@Controller("/test")
public class DemoController {
@ExecuteOn(TaskExecutors.IO)
@Post(value = "/{param1}/{param2}",consumes = MediaType.MULTIPART_FORM_DATA,produces = MediaType.TEXT_PLAIN)
public HttpResponse<String> post(CompletedFileUpload file,String param1,String param2) {
System.out.println("Param1: " + param1 + " Param2: " + param2 + " File name: " + file.getFilename() + " Size: " + file.getSize() + " Type: " + file.getContentType().get());
return HttpResponse.ok("Uploaded!");
}
}
cURL 命令:
.\curl.exe -v -F "file=@dummy.pdf" localhost:8080/test/param1/param2
* Trying ::1:8080...
* Connected to localhost (::1) port 8080 (#0)
> POST /test/param1/param2 HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.77.0
> Accept: */*
> Content-Length: 13456
> Content-Type: multipart/form-data; boundary=------------------------2252ddfaf1589615
>
* We are completely uploaded and fine
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon,31 May 2021 17:52:23 GMT
< content-type: text/plain
< content-length: 9
< connection: keep-alive
<
Uploaded!* Connection #0 to host localhost left intact
输出:
Param1: param1 Param2: param2 File name: file Size: 13264 Type: application/pdf
Java 代码对您有用吗?也许这是一些与 Kotlin/Groovy (?) 相关的问题 [静态导入/短格式?]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。