2017-07-17 4 views
1

Ich habe diese API, die eine Datei hochladen soll. Der Code wurde entwickelt, um die hochgeladene Datei in $request->files dort zu suchen, wo sie sein sollte, aber diese Variable ist leer. Stattdessen finde ich das Bild in $content in seiner Zeichenform ( ). Ist dieses Verhalten fehlerhaft oder fehlt mir etwas? Ich überprüfte composer.json, aber kein Upload (Vich oder DoctrineExtensions) Bundle ist enthalten noch konfiguriert. Ich könnte einen von ihnen einrichten, aber ich weiß nicht, ob das aktuelle Verhalten von Natur aus falsch ist oder der vorherige Entwickler etwas mehr darüber wusste als ich?Datei hochgeladen als Blob

Für das Protokoll habe ich die YAML-Datei für die File-Klasse, die auf der einen von 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 ähnlich aussieht:, keine Blobs in der Datenbank die Dateien sollen gespeichert werden als Dateien.

Antwort

0

Es sieht so aus, als ob der Client die Datei im Hauptteil einer typischen HTTP-Anfrage sendet, anstatt eine mehrteilige Anfrage zu verwenden. Symfonys $request->files (und allgemein alles unter Verwendung der PHP $_FILES unter der Haube) funktioniert nur mit mehrteiliger Anfrage.

Sie können entweder, fixieren Sie Ihren Client mehren Anfragen (von PHP zur Verfügung gestellt und profitieren Sie von dem Sicherheitsschutz) zu senden oder sie mit dem rohen Inhalt beschäftigen, indem etwas wie tun:

// 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()); 
Verwandte Themen