2017-07-17 2 views
1

Je reçois cette API qui est supposée télécharger un fichier. Le code a été conçu pour rechercher le fichier téléchargé où il devrait être, en $request->files mais cette variable est vide. Au lieu de cela, je trouve l'image dans $content dans sa forme de caractère ( ). Ce comportement est-il défectueux ou ai-je oublié quelque chose? J'ai vérifié composer.json mais aucun ensemble de téléchargement (Vich ou DoctrineExtensions) n'est inclus ou configuré. Je pourrais en créer un mais je ne sais pas si le comportement actuel est mauvais par nature ou si le développeur précédent en savait plus que moi.Fichier téléchargé en tant que blob

Pour mémoire, j'ai le fichier YAML pour la classe de fichier qui ressemble à celui de DoctrineExtensions - Uploadable

MyApp\FileBundle\Entity\File: 
    type: entity 
    table: file_records 
    repositoryClass: MyApp\FileBundle\Repository\FileRepository 

    id: 
     id: 
      type: integer 
      generator: 
       strategy: AUTO 

    fields: 

     path: 
      name: path 
      type: string 

     name: 
      name: string 
      type: string 

     mimeType: 
      name: mimeType 
      type: string 
      nullable: true 

     size: 
      name: size 
      type: decimal 
      nullable: true 

     initialName: 
      name: initial_name 
      type: string 

Ps: les fichiers sont censés être enregistrés sous forme de fichiers, pas blobs dans la base de données.

Répondre

0

Il semble que le client envoie le fichier dans le corps d'une requête HTTP typique au lieu d'utiliser une requête multipart. Le $request->files de Symfony (et en général tout ce qui utilise le $_FILES de PHP sous le capot) ne fonctionne qu'avec la requête multipart.

Vous pouvez, fixer votre client pour envoyer des demandes (et multipart bénéficier d'une protection de sécurité fournie par PHP) ou traiter le contenu brut par vous-même en faisant quelque chose comme:

// Be careful to check that the real content is not PHP or something harmful this before 
file_put_contents('/path/to/myimage.png', $request->getContent());