Partage
  • Partager sur Facebook
  • Partager sur Twitter

API REST FULL aves symfony 3

Upload de fichier

Sujet résolu
14 septembre 2017 à 16:52:09

Salut à tous, 

je fais face à une situation depuis un certain temps qui est l'upload d'un fichier voici le formulaire:

class UserPhotoEditType extends AbstractType {
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
                ->add('photo', MediaType::class)
        ;
    }
    
    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'User\UserBundle\Entity\User',
            'csrf_protection' => false,
            'allow_extra_fields' => true,
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'user_photo_edit';
    }

}

l' entity User

class User implements UserInterface
{
    ....

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="created_at", type="datetime", nullable=false)
     */
    private $createdAt;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="updated_at", type="datetime", nullable=true)
     */
    private $updatedAt;

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;
    
    /**
     * @ORM\OneToOne(targetEntity="Gallery\GalleryBundle\Entity\Media")
     */
    private $photo;
}

pour l'upload j'utilise le tuto suivant Développez votre site web avec le framework Symfony .

lorsque j'envoi le fichier au forma json avec postmant

{
	"photo": 
		{
			"file": "E:\\Images\\4259.jpg"
		}
}

j'obtient cette erreur

statusCode = 400

{
    "errors": [
        "This value should not be blank."
    ],
    "children": {
        "photo": {
            "children": {
                "file": {}
            }
        }
    }
}

Quelqu'un peut avoir une idée sur l'origine du problème et si possible aussi une piste de solution?

merci






  • Partager sur Facebook
  • Partager sur Twitter
C'est en forgeant que l'on deviens forgeron
14 septembre 2017 à 17:36:45

Salut,

MediaType:: ou FileType::

-
Edité par 1nsan3 14 septembre 2017 à 17:37:26

  • Partager sur Facebook
  • Partager sur Twitter
15 septembre 2017 à 0:14:56

mediaType 

voici le code 

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\CallbackTransformer;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\HttpFoundation\File\File;

class MediaType extends AbstractType
{
    /**
     * {@inheritdoc}
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
                ->add('file', FileType::class)
        ;
    }
    
    /**
     * {@inheritdoc}
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Gallery\GalleryBundle\Entity\Media',
            'csrf_protection' => false,
            'allow_extra_fields' => true,
        ));
    }

    /**
     * {@inheritdoc}
     */
    public function getBlockPrefix()
    {
        return 'gallery_gallerybundle_Media';
    }
}



  • Partager sur Facebook
  • Partager sur Twitter
C'est en forgeant que l'on deviens forgeron
15 septembre 2017 à 16:54:41

Bonjour,

Peux tu nous donner le code de la requête HTTP avec Postman (En cliquant sur "Code" à droite du formulaire -form-data)

Merci,

  • Partager sur Facebook
  • Partager sur Twitter
17 septembre 2017 à 14:14:03

PATCH /apps/api/web/app_dev.php/admin/account/edit/photo HTTP/1.1
Host: localhost
Accept: application/json;v=1.0
Authorization: g/mYYtIhRFqAAYrYZCvlxS19KZpi5USn4IWUjm54XRSHEALo3yRsay/YNezSFBihKc+69ngzm0B0tVnQoV1/UzsHnoLjGmIzL7JJVUPW9/ebKkai1/OF3SFf3ZIvuMfInATZCQ==
Content-Type: application/json
Content-Type: multipart/form-data
Cache-Control: no-cache
Postman-Token: 0e4aa732-6e06-4bf2-5b36-8e30abcc5c75

{
    "photo":
        {
            "file": "E:\\Images\\4259.jpg"
        }
}
  • Partager sur Facebook
  • Partager sur Twitter
C'est en forgeant que l'on deviens forgeron
22 septembre 2017 à 11:02:21

salut a tous 

j'ai trouvé la solution à mon problème 

si sa peut aider 

https://ourcodeworld.com/articles/read/53/how-to-upload-a-file-with-jquery-ajax-in-php-or-symfony 

  • Partager sur Facebook
  • Partager sur Twitter
C'est en forgeant que l'on deviens forgeron