Spring 不允许文件上传(不支持应用程序八位字节)

问题描述 投票:0回答:1

我正在尝试使用 Kotlin Spring 将 pdf 上传到 MinIO。我写了一个控制器来上传 pdf:

@PostMapping(consumes = [MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_OCTET_STREAM_VALUE])
    fun createPaper(
        @RequestPart("metadata") paperRequest: PaperRequest,
        @RequestPart("pdf") pdfFile: MultipartFile
    ): ResponseEntity<Paper>

我正在提出以下卷曲请求:

$ curl -X POST http://localhost:8082/api/v1/papers -F "metadata={\"title\":\"Example Research Paper\",\"authors\":[\"Jane Smith\",\"John Doe\"],\"ab
stract\":\"This is a test paper abstract\",\"doi\":\"10.1234/test.123\",\"venue\":\"Test Conference 2024\",\"keywords\":[\"testing\",\"research\"]}" -F "[email protected];type=application/pdf" -H "Content-Type: multipart/form-data"

但是,我不断收到这样的回复:

{"timestamp":"2025-01-07T09:14:36.910+00:00","status":415,"error":"Unsupported Media Type","path":"/api/v1/papers"}

这是春天日志所说的:

DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content-Type 'application/octet-stream' is not supported]

为什么不允许我上传文件?
我尝试过的事情:

  • 将 MediaType.APPLICATION_OCTET_STREAM_VALUE 添加到控制器中的消费
  • 将此添加到 application.yaml
      mvc: content-negotiation: media-types: octet-stream: application/octet-stream servlet: multipart: enabled: true max-file-size: 120MB max-request-size: 120MB
  • 尝试通过 HTML 和 cURL 从 Postman 发出请求。 如有任何帮助,我们将不胜感激!
spring spring-boot kotlin file-upload minio
1个回答
0
投票

将内容类型

application/json
添加到
metadata
-F "metadata={\"key\": \"value\"};type=application/json"

您的卷发需要进行更改以使其发挥作用:

curl -X POST http://localhost:8082/api/v1/papers \
-F "metadata={\"title\":\"Example Research Paper\",\"authors\":[\"Jane Smith\",\"John Doe\"],\"ab
stract\":\"This is a test paper abstract\",\"doi\":\"10.1234/test.123\",\"venue\":\"Test Conference 2024\",\"keywords\":[\"testing\",\"research\"]};type=application/json" \
-F "[email protected];type=application/pdf" \
-H "Content-Type: multipart/form-data"

还有:

  • 您不需要将
    consumes
    传递给
    PostMapping
  • 你不需要通过
    -H "Content-Type: multipart/form-data"
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.