错误:在null上调用成员函数guessExtension()

时间:2017-03-19 19:21:30

标签: image rest symfony upload

  

如何为帖子文件编辑此代码?错误:错误:在null(500内部服务器错误)代码上调用成员函数guessExtension():

我试试这个:

  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

注意:我正在使用Advanced Rest Client

4 个答案:

答案 0 :(得分:0)

我试试这段代码:

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




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

结果:字符串(0)“”

答案 1 :(得分:0)

只需在您的表单标签中添加以下属性: enctype='multipart/form-data'

答案 2 :(得分:-1)

错误消息告诉您问题,您甚至确定了违规行。您应该添加一些检查以避免破坏您的代码:

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

    // ...
}

你应该解决问题的根源,即确定你的行

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

正在返回正确的对象。

答案 3 :(得分:-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']);
        }
    }