微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Micronaut 分段上传 - 错误:“未指定必需参数 [CompletedFileUpload]”

如何解决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 举报,一经查实,本站将立刻删除。