Код: Выделить всё
@POST
@Path("/v1/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response upload (
@FormDataParam("file")
InputStream file,
@FormDataParam("file")
FormDataContentDisposition disposition) {
return Response.ok().build();
}
< /code>
Как только запрашивается запрос (образец, показанный ниже), Tomcat или Jersey отправляет обратный ответ 400 плохой запросы, прежде чем даже вступить в метод конечной точки. Единственная вещь, записанная в любом журнале Tomcat, заключается в общем «Access_log», где он вставляет запись в журнале о URL-адресе запроса конечной точки и коде ответа 400. Я проверил все другие журналы Tomcat, и нигде нет других записей журнала, которые описывают, почему 400 возвращается. < /P>
Возвращает 400, что, кажется, в ответ «Один», который, кажется, является «Один», который, кажется, в «Один», который, кажется, является «Один», который, кажется, является «Один», который, кажется, является «Один», который, кажется, является «Один», который, кажется, является «Один», который, кажется, является «Один», который, кажется, является «Один», который, кажется, является «В целом», который, кажется, в «Один», который, кажется, является «Один». Ответ: < /p>
Сервер не может или не будет обрабатывать запрос из -за чего -то, что воспринимается как ошибка клиента (например, синтаксис неверного запроса, неверный образец запроса или обманчивый запрос).POST http://localhost//v1/upload?_=1744409038175&cid=m9dc0kkulvrjar8sxgl&tkn=974016a9-5a49-45d4-98c9-dba380735578 HTTP/1.1
Host: localhost
Connection: keep-alive
Content-Length: 717939
sec-ch-ua-platform: "Windows"
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36
Accept: application/json, text/plain, */*
sec-ch-ua: "Google Chrome";v="135", "Not-A.Brand";v="8", "Chromium";v="135"
Content-Type: multipart/form-data
sec-ch-ua-mobile: ?0
Origin: http://localhost
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://localhost//
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: en-US,en-GB;q=0.9,en;q=0.8
Cookie:
------WebKitFormBoundarydDDQsAC7Rqf3IM5I
Content-Disposition: form-data; name="file"; filename="Sample file.pdf"
Content-Type: application/pdf
----WebKitFormBoundarydDDQsAC7Rqf3IM5I--
< /code>
Если я изменяю сигнатуру метода конечной точки (то есть, чтобы удалить аннотации @formdataparam и иметь только 1 параметр inputstream) к следующему: < /p>
@POST
@Path("/v1/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response upload (
InputStream file) {
return Response.ok().build();
}
< /code>
выше будет работать, и Tomcat не отправит обратно 400. Однако я не могу определить какие -либо другие параметры метода или использовать аннотацию @formdataparam. На самом деле, с приведенной выше подписью метода, если бы я добавил параметр @formdataparam ("file") org.glassfish.jersey
jersey-bom
3.1.10
pom
import
org.glassfish.jersey.containers
jersey-container-servlet-core
org.glassfish.jersey.containers
jersey-container-servlet
org.glassfish.jersey.inject
jersey-hk2
org.glassfish.jersey.media
jersey-media-json-binding
org.glassfish.jersey.media
jersey-media-multipart
org.glassfish.jaxb
jaxb-runtime
4.0.5
...
< /code>
На самом деле, кажется, что в любое время используется аннотация @formdataparam, возникает ответ 400.
Подробнее здесь: https://stackoverflow.com/questions/795 ... jersey-3-1