【问题标题】:Symfony API Platform : file upload on updateSymfony API 平台:更新时上传文件
【发布时间】:2020-08-19 01:59:41
【问题描述】:

我被 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 参数。

有人能做到吗?

【问题讨论】:

    标签: symfony api-platform.com


    【解决方案1】:

    自己找到了解决办法!

    最后,问题是 PHP 在 PUT 上不能很好地处理 FormData 中的文件,但在 POST 上却很好。

    因此,如果您遇到相同的问题,请将 itemOperations 的“put”部分中的“method”="POST" 更改为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 2019-10-03
      • 1970-01-01
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多