如何使用Curl将多个文件上载到Micronaut?

如何使用Curl将多个文件上载到Micronaut?,curl,micronaut,Curl,Micronaut,我需要管理多个文件上传到我的Micronaut控制器(具有相同部件名称的多个部件) 我尝试了以下方法: @Post(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA) HttpResponse upload(Publisher<CompletedFileUpload> files) 我知道错误与我的代码无关,因为upload方法实际上是空的,只返回HttpResponse.ok() 我使用curl不正确吗? Mi

我需要管理多个文件上传到我的Micronaut控制器(具有相同部件名称的多个部件)

我尝试了以下方法:

@Post(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA)
HttpResponse upload(Publisher<CompletedFileUpload> files)
我知道错误与我的代码无关,因为upload方法实际上是空的,只返回
HttpResponse.ok()

我使用curl不正确吗? Micronaut中有bug吗


多谢各位

我发现了错误:部件名称必须与上载方法中的参数名称匹配,此处为
文件

如果我将curl命令更改为:

curl -X POST -F 'files=@/path/to/file1.txt' -F 'files=@/path/to/file2.txt' <SERVER_BASE_URL>/upload
curl-X POST-F'files=@/path/to/file1.txt'-F'files=@/path/to/file2.txt'/upload
它就像一个符咒

curl -X POST -F 'data=@/path/to/file1.txt' -F 'data=@/path/to/file2.txt' <SERVER_BASE_URL>/upload
curl -X POST -F 'data=gruik' -F 'data=grok' <SERVER_BASE_URL>/upload
io.micronaut.web.router.exceptions.UnsatisfiedRouteException: Required argument [Publisher files] not specified
    at io.micronaut.web.router.AbstractRouteMatch.execute(AbstractRouteMatch.java:279)
    at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:122)
    at io.micronaut.http.server.netty.RoutingInBoundHandler.lambda$buildResultEmitter$17(RoutingInBoundHandler.java:1360)
    at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:71)
    at io.reactivex.Flowable.subscribe(Flowable.java:14805)
    at io.reactivex.Flowable.subscribe(Flowable.java:14752)
    at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
    at io.reactivex.Flowable.subscribe(Flowable.java:14805)
    at io.reactivex.internal.operators.flowable.FlowableMap.subscribeActual(FlowableMap.java:37)
    at io.reactivex.Flowable.subscribe(Flowable.java:14805)
    at io.reactivex.Flowable.subscribe(Flowable.java:14752)
    at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
    at io.reactivex.Flowable.subscribe(Flowable.java:14805)
    at io.reactivex.internal.operators.flowable.FlowableSwitchIfEmpty.subscribeActual(FlowableSwitchIfEmpty.java:32)
    at io.reactivex.Flowable.subscribe(Flowable.java:14805)
    at io.reactivex.Flowable.subscribe(Flowable.java:14752)
    at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
    at io.reactivex.Flowable.subscribe(Flowable.java:14805)
    at io.reactivex.Flowable.subscribe(Flowable.java:14755)
    at io.micronaut.http.context.ServerRequestTracingPublisher.lambda$subscribe$0(ServerRequestTracingPublisher.java:52)
    at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:52)
    at io.micronaut.http.context.ServerRequestTracingPublisher.subscribe(ServerRequestTracingPublisher.java:52)
    at io.reactivex.internal.operators.flowable.FlowableFromPublisher.subscribeActual(FlowableFromPublisher.java:29)
    at io.reactivex.Flowable.subscribe(Flowable.java:14805)
    at io.reactivex.Flowable.subscribe(Flowable.java:14752)
    at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
    at io.reactivex.Flowable.subscribe(Flowable.java:14805)
    at io.reactivex.Flowable.subscribe(Flowable.java:14752)
    at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
    at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288)
    at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)
curl -X POST -F 'files=@/path/to/file1.txt' -F 'files=@/path/to/file2.txt' <SERVER_BASE_URL>/upload