Symfony API Platform: загрузка файла при обновлении - PullRequest
0 голосов
/ 04 мая 2020

Я застрял с чем-то с API Platform и Vich Uploader для запроса PUT, POST работает нормально.

Вот мой заголовок для объекта MediaObject:

/**
 * @ORM\Entity
 * @ApiResource(
 *     iri="http://schema.org/MediaObject",
 *     normalizationContext={
 *         "groups"={"media_object_read"}
 *     },
 *     collectionOperations={
 *         "post"={
 *             "controller"=CreateMediaObjectAction::class,
 *             "deserialize"=false,
 *             "security"="is_granted('ROLE_USER')",
 *             "validation_groups"={"Default", "media_object_create"},
 *             "openapi_context"={
 *                 "requestBody"={
 *                     "content"={
 *                         "multipart/form-data"={
 *                             "schema"={
 *                                 "type"="object",
 *                                 "properties"={
 *                                     "file"={
 *                                         "type"="string",
 *                                         "format"="binary"
 *                                     }
 *                                 }
 *                             }
 *                         }
 *                     }
 *                 }
 *             }
 *         },
 *         "get",
 *     },
 *     itemOperations={
 *         "get",
 *         "put"={"controller"=UpdateMediaObjectAction::class,
 *             "deserialize"=false,
 *             "security"="is_granted('ROLE_USER')",
 *             "validation_groups"={"Default", "media_object_update"},
 *             "openapi_context"={
 *                 "requestBody"={
 *                     "content"={
 *                         "multipart/form-data"={
 *                             "schema"={
 *                                 "type"="object",
 *                                 "properties"={
 *                                     "file"={
 *                                         "type"="string",
 *                                         "format"="binary"
 *                                     }
 *                                 }
 *                             }
 *                         }
 *                     }
 *                 }
 *             }},
 *     "delete"={
 *          "security"="is_granted('ROLE_USER')"
 *     }
 *     }
 * )
 * @Vich\Uploadable
 */
class MediaObject
{...}

В swagger выдает ошибку, поскольку файл не прикреплен к запросу. Это странно, потому что у меня точно такое же поле ввода файла, только с добавленным параметром ID.

Кто-то сумел это сделать?

1 Ответ

0 голосов
/ 07 мая 2020

Сам нашел решение!

Наконец, проблема в том, что PHP плохо обрабатывает файл в FormData на PUT, но хорошо на POST.

Так что если вы получили то же самое изменение проблемы на "method" = "POST" в части "put" из itemOperations.

...