Проблема с параметром метода (наличие @FormDataParam
)
public Response bulkUpload(@FormDataParam("file") FormDataMultiPart multiPart) {}
@FormDataParam
используется, когда вы хотите декларативно извлечь отдельные детали из составной частиrequest, тогда как FormDataMultiPart
используется для получения всего составного тела, а программно для извлечения каждой части. Возможно иметь вложенную составную часть, где полная составная часть является отдельной деталью (в этом случае то, что у вас будет работать), но здесь это не так.
Если вы удалите@FormDataParam("file")
, тогда он будет работать как положено.Вы можете начать извлечение деталей из составной части, используя метод, который вы используете getField(fieldName)
.Это даст вам FormDataBodyPart
за каждую часть, которую вы извлекаете.Вы можете получить данные с помощью FormDataBodyPart#getValueAs(InputStream.class)
, если вы хотите эту часть как InputStream
, или вы можете использовать File.class
или byte[].class
, независимо от ваших предпочтений.Вот как можно извлечь данные из FormDataMultiPart
.
Каждая часть имеет свое собственное имя, и вы извлекаете часть, используя это имя.В случае вашего запроса cURL вы отправили одну часть, и имя этой части - file
.то есть "file=@/Users/..."
.Поэтому, если вы хотите отправить другую часть, просто добавьте другой параметр с другим именем, , как упомянуто Владимиром :
curl -X POST "http://localhost:37200/api/sample-bulk"\
-H "accept: application/json"\
-H "Content-Type: multipart/form-data"\
-F "file1=@/Users/naman/Desktop/Media/video.mp4"\
-F "file2=@/Users/naman/Desktop/Media/another_video.mp4"
Как я упоминал ранее, @FormDataParam
используется для извлечениячасти декларативно.Вы используете имя детали в качестве значения аннотации.Таким образом, с помощью предыдущей команды cURL вы можете выполнить.
public Response bulkUpload(
@FormDataParam("file1") InputStream file1,
@FormDaraParam("file1") FormDataContentDisposition file1Fdcd,
@FormDataParam("file2") InputStream file2,
@FormDaraParam("file2") FormDataContentDisposition file2Fdcd) {
}
Вы можете получить информацию о детали, такую как имя файла, из FormDataContentDisposition
.
См. Также