Witam,
mam problem z przesłaniem pliku z frontu na serwer. Z frontu wysyłam w tablicy:
data:image/png;base64,iVBORw0 ....
i na serwerze dostaje to w $request->request->get('images') (wcześniej inną metodą na fronie dostawałem to w $request->files->get('images') i wszystko działało ale jestem zmuszony to zmienić), przed zatwierdzeniem formularza robię tak:
$request->files->add([
'images' => $request->request->get('images')
]);
$request->request->remove('images');
$fileData = ['images' => $request->files->get('images')];
$arrayMerge = array_merge($request->request->all(), $fileData);
$form->submit($arrayMerge);
i potem w serwisie wyświetlam dane które dostałem z $form->getData(); i wtedy dostaje null, sprawdzałem co wrzucam do $form->submit i tablica z plikiem wygląda tak samo jak robiłem wcześniejszą metodą, co może być nie tak żepo $form->submit wyrzuca w images null?. Z ciekawości sprawdziłem jak wygląda plik przesłany metodą która działa (dane wyświetlałem przed ze zmiennej $arrayMerge) i plik też przychodził z base64, głowie się już z tym kilka godzin próbowałem różnych metod ale żadna nie działała :/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('images', FileType::class, [
'multiple' => true,
'attr' => [
'accept' => 'image/*',
'multiple' => 'multiple'
]
])
;
}
public function create(Request $request): Response
{
$form = $this->createForm(RecipeType::class, null);
$request->files->add([
'images' => $request->request->get('images')
]);
$request->request->remove('images');
$fileData = ['images' => $request->files->get('images')];
$arrayMerge = array_merge($request->request->all(), $fileData);
$form->submit($arrayMerge);
if ($form->isValid()) {
$data = $form->getData();
$user = $this->userService->getUserByUsername("Admin");
return $this->json([
'success' => $this->translator->trans('recipe_created'),
'slug' => $this->recipeService->createRecipe($data, $user)
], Response::HTTP_CREATED);
}
return $this->json([
'error' => $this->translator->trans('form_is_not_valid'),
'fields' => $this->converter->convertErrorsFromFrom($form),
'file' => $request->files->get('images'),
'request' => $request->request->all(),
'arrayMerge' => $arrayMerge,
], Response::HTTP_BAD_REQUEST);
}