我正在尝试使用 Api Platform 和 Vich Uploader Bundle 上传文件。当我发送带有 multipart/form-data 和要附加图像文件的实体 ID 的 POST 请求时,我的实体收到 200 响应。但上传的文件不会上传到目标目录,并且生成的文件名不会保留。没有错误,没有任何线索,没有想法。
这是我的代码:
//vich uploader mappings
vich_uploader:
db_driver: orm
mappings:
logo:
uri_prefix: /logo
upload_destination: '%kernel.project_dir%/public/images/logo/'
namer: App\Infrastructure\Naming\LogoNamer
final class CreateOrganizationLogoAction extends AbstractController
{
const OPERATION_NAME = 'post_logo';
const OPERATION_PATH = '/places/{id}/logo';
private OrganizationPgRepository $repository;
public function __construct(OrganizationPgRepository $repository)
{
$this->repository = $repository;
}
/**
* @param Request $request
*
* @return EntityOrganization
*/
public function __invoke(Request $request): EntityOrganization
{
$uploadedFile = $request->files->get('logoFile');
if (!$uploadedFile) {
throw new BadRequestHttpException('"file" is required');
}
$organization = $this->repository->find(Uuid::fromString($request->attributes->get('id')));
$organization->logoFile = $uploadedFile;
return $organization;
}
}
我正在发送请求:
curl -X POST "http://localhost:8081/api/places/0dc43a86-6402-4a45-8392-19d5e398a7ab/logo" -H "accept: application/ld+json" -H "Content-Type: multipart/form-data" -F "logoFile=@test.png;type=image/png"
正如你所看到的,一切都很好。找到了适当的组织。甚至 logoFile 字段也被上传的图片填满。但上传的文件并未移动到目的地。并且 logoPath 包含旧徽标文件名。
正如我所说,没有错误。请帮我弄清楚在哪里挖掘。
达令说
犯罪嫌疑人X