2017-03-19 1 views
0

how to edit this code for post file? Error: Error: Call to a member function guessExtension() on null (500 Internal Server Error) Code :Fehler: Rufen Sie auf eine Elementfunktion guessExtension() auf null

Ich versuche dies:

public function ekleAction(Request $request) 
    { 

    //doctrini çağırdık 
    $em=$this->getDoctrine()->getManager(); 

    //posttan gelen veriler 
    $adi=$request->get('adi'); 
    $aciklama=$request->get('aciklama'); 
    $fiyat=$request->get('fiyat'); 
    $fotom = $request->files->get('foto'); 
    $kapak_foto=$request->files->get('kapakFoto'); 
    $kategorim=$request->get('kategori'); 
    $telefon=$request->get('usrtel'); 
    $user=$request->get('uye_id'); 

    $kategori= $em->getRepository("VanBundle:Kategori")->findOneBy(array('id'=>$kategorim)); 
    $user2=$em->getRepository("VanBundle:User")->findOneBy(array('id'=>$user)); 
    $serializer=$this->get('jms_serializer'); 

    try { 
     $oto = new Oto(); 
     $oto->setAdi($adi); 
     $oto->setAciklama($aciklama); 
     $oto->setFiyat($fiyat); 
     $oto->setKategori($kategori); 
     $oto->setUye($user2); 


     if ($telefon == null) { 
      $oto->setTelefon("yok"); 
     } else { 
      $oto->setTelefon($telefon); 
     } 


     $fileName2 = md5(uniqid()) . '.' . $kapak_foto->guessExtension(); 

     $kapak_foto->move(
      $this->getParameter('brochures_directory'), 
      $fileName2 
     ); 

     $oto->setKapakFoto($fileName2); 


     $images = array(); 
     if ($fotom != null) { 
      $key = 0; 


      // Çoklu Fotoğraf alma 
      foreach ($fotom as $file) { 
       $fileName = md5(uniqid()) . '.' . $file->guessExtension(); 

       $file->move(
        $this->getParameter('brochures_directory'), 
        $fileName 
       ); 
       $images[$key++] = $fileName; 


       $foto = new Foto(); 
       $oto->addFotolar($foto); 
       $foto->setAdi($fileName); 
       $foto->setOto($oto); 

       foreach ($images as $uploadfileName) { 


        $em->persist($oto); 
        $em->persist($foto); 
        $em->flush(); 

       } 
      } 
     } 

     $data=$serializer->serialize("Başarılı",'json'); 

     return new Response($data,200,['content-type'=>'application/json']); 

    }catch (Exception $exception){ 

     $data=$serializer->serialize($exception->getMessage(),'json'); 

     return new Response($data,200,['content-type'=>'application/json']); 
    } 
} 

$kapak_foto=$request->files->get('kapakFoto'); //null 

Hinweis: Ich verwende erweiterte REST-Client

+0

Was ist die ursprüngliche Anforderung, die wie auf dem Controller Blick gesendet wird? Bitte beachten Sie, dass der 'FileBag' der Symfony' Request' Klasse basierend auf dem Inhalt von '$ _FILES' Superglobal exposed ist. Und diese wird nur mit den entsprechenden gesendeten Daten gefüllt, wenn die Anfrage vom Typ multipart/form-data ist (siehe http://php.net/manual/en/features.file-upload.post-method.php) . – xabbuh

Antwort

-1
public function ekleAction(Request $request) 
    { 
     //doctrini çağırdık 
     $em=$this->getDoctrine()->getManager(); 





     //posttan gelen veriler 

     $data = json_decode($request->get('formData'),true); 


     $adi=$data['adi']; 
     $aciklama=$data['aciklama']; 
     $fiyat=$data['fiyat']; 
     $fotom = $request->files->get('foto'); 
     $kapak_foto=$request->files->get('kapakFoto'); 
     $kategorim=$data['kategori']; 
     $telefon=$data['usrtel']; 
     $user=$data['uye_id']; 



     $kategori= $em->getRepository("VanBundle:Kategori")->findOneBy(array('id'=>$kategorim)); 
     $user2=$em->getRepository("VanBundle:User")->findOneBy(array('id'=>$user)); 
     $serializer=$this->get('jms_serializer'); 



     try { 
      $emlak = new Emlak(); 
      $emlak->setAdi($adi); 
      $emlak->setAciklama($aciklama); 
      $emlak->setFiyat($fiyat); 
      $emlak->setKategori($kategori); 
      $emlak->setUye($user2); 


      if ($telefon == null) { 
       $emlak->setTelefon("yok"); 
      } else { 
       $emlak->setTelefon($telefon); 
      } 


      $fileName2 = md5(uniqid()) . '.' . $kapak_foto->guessExtension(); 

      $kapak_foto->move(
       $this->getParameter('brochures_directory'), 
       $fileName2 
      ); 

      $emlak->setKapakFoto($fileName2); 
      $images = array(); 
      if ($fotom != null) { 
       $key = 0; 


       //burası şuani için array değil 
       // Çoklu Fotoğraf alma 
       foreach ($fotom as $file) { 
        // $file = $fotom; 
        $fileName = md5(uniqid()) . '.' . $file->guessExtension(); 

        $file->move(
         $this->getParameter('brochures_directory'), 
         $fileName 
        ); 
        $images[$key++] = $fileName; 


        $foto = new Foto(); 
        $emlak->addFotolar($foto); 
        $foto->setAdi($fileName); 
        $foto->setEmlak($emlak); 

        foreach ($images as $uploadfileName) { 


         $em->persist($emlak); 
         $em->persist($foto); 
         $em->flush(); 

        } 
       } 
      } 

      $data=$serializer->serialize("Başarılı",'json'); 

      return new Response($data,200,['content-type'=>'application/json']); 

     }catch (Exception $exception){ 

      $data=$serializer->serialize($exception->getMessage(),'json'); 

      return new Response($data,200,['content-type'=>'application/json']); 
     } 
    } 
-1

Die Fehlermeldung ist Ihnen das Problem zu erklären, und Sie haben sogar die beleidigende Linie identifiziert. Sie sollten einige Kontrollen fügen Sie Ihren Code zu brechen zu vermeiden:

if ($kapak_foto instanceof WhateverObject) { 
    $fileName2 = md5(uniqid()) . '.' . $kapak_foto->guessExtension(); 

    // ... 
} 

und Sie sollten die Ursache des Problems beheben, das heißt sicherstellen, dass Ihre Linie

$kapak_foto=$request->files->get('kapakFoto'); //null 

ist das richtige Objekt zurück.

+0

kapakFoto bedeutet Cover-Foto. Ich versuche $ kapak_foto instanceof Datei. Funktioniert nicht. Ich brauche Ihre Hilfe – aziz

+0

Es gibt keine Möglichkeit, dass Ihre Anweisung ein Objekt vom Typ Datei ergibt. Versuchen Sie, den Dokumenten zu folgen, um zu erreichen, was Sie wollen: http://symfony.com/doc/master/controller/upload_file.html Sie machen manuell etwas von der Arbeit, die symfony für Sie tun wird, wenn Sie symfony Formen benutzen würden. – ehymel

+0

Ich möchte keine Symfony-Formulare verwenden – aziz

0

Ich versuche, diesen Code:

public function indexAction(Request $request) 
    { 
     $foto=$request->files->get('foto'); 




     return new Response(var_dump(base64_decode($foto))); 
    } 

Ergebnis: string (0) ""

Verwandte Themen