Witam,
stworzyłem RecipeType w który mam pole photos, dla tego pola ustawiłem FileType ale mam teraz z tym problem, gdy przesyłam przez Postman zdjęcie to dostaje null. Próbowałem zmieniać nagłówki ale też bez pozytywnego skutku, ciągle wyskakuje błąd funkcja upload dostaje null.
/**
* @Rest\Post("/recipes", name="recipe_create")
*
* @param Request $request
*
* @throws NonUniqueResultException
*
* @return Response
*/
public function create(Request $request): Response
{
$form = $this->createForm(RecipeType::class, null);
$form->submit($request->request->all());
if ($form->isValid()) {
$data = $form->getData();
$user = $this->userService->getUserByUsername("Admin");
return $this->json([
'success' => $this->recipeService->createRecipe($data, $user),
], Response::HTTP_CREATED);
}
return $this->json([
'error' => $this->translator->trans('form_is_not_valid'),
'fields' => $this->converter->convertErrorsFromFrom($form),
], Response::HTTP_BAD_REQUEST);
}
public function createRecipe(array $recipeForm, User $user)
{
// return $this->fileUploaderService->upload($recipeForm['photos']);
return $recipeForm['photos'];
}
class FileUploaderService
{
/**
* @var string $targetDirectory
*/
private $targetDirectory;
/**
* FileUploaderService constructor.
*
* @param $targetDirectory
*/
public function __construct($targetDirectory)
{
$this->targetDirectory = $targetDirectory;
}
/**
* @param UploadedFile $file
*
* @return string
*/
public function upload(UploadedFile $file)
{
$fileName = md5(uniqid()).'.'.$file->guessExtension();
$file->move($this->getTargetDirectory(), $fileName);
return $fileName;
}
/**
* @return mixed
*/
public function getTargetDirectory()
{
return $this->targetDirectory;
}
}
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('photos', FileType::class)
;
}