我正在尝试使用 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]
为什么不允许我上传文件?
我尝试过的事情:
mvc: content-negotiation: media-types: octet-stream: application/octet-stream servlet: multipart: enabled: true max-file-size: 120MB max-request-size: 120MB
将内容类型
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"