图像没有移动到正确的文件夹zend framework2

时间:2016-06-11 05:29:58

标签: php zend-framework zend-framework2 image-uploading

我开始研究Zend Framework图片上传。代码没有显示任何错误,但图片没有移动到正确的目的地。

public function uploadAction()
    {
        error_reporting(E_ALL);
        ini_set('display_errors', 1);
        $form = new UploadForm();
        $form->get('submit')->setValue('Add');
        $request = $this->getRequest();
        if ($request->isPost()) 
        {
            $profile = new Upload();
            $form->setInputFilter($profile->getInputFilter());

            $nonFile = $request->getPost()->toArray();
            $File    = $this->params()->fromFiles('fileupload');
            $data = array_merge_recursive($request->getPost()->toArray(), $request->getFiles()->toArray());
            //print_r($data);die;
            //set data post and file ...
            $form->setData($data);

            if ($form->isValid()) 
            {

                 $favicon = $data['fileupload']['name'];
                 $ext = pathinfo($favicon, PATHINFO_EXTENSION);
                 $faviconnewname = "_favicon." . $ext;
                 $favadapter = new \Zend\File\Transfer\Adapter\Http();
                 $favadapter->setDestination('public/img/upload'); //upload destination
                 $favadapter->addFilter('Rename', $faviconnewname, $favicon);
                 if($favadapter->receive($favicon))
                 {
                     echo "suceess";
                 }
                 else
                 {
                     echo "Failed";
                 }
                 die;
            }
        }
        return array('form' => $form);
    }

未收到图片并提供失败的消息。您可以解决此问题。谢谢提前

2 个答案:

答案 0 :(得分:1)

你写“给失败的消息”所以显然出了问题。您应该尝试找出原因和原因......我们所能做的就是猜测您在问题中提供的信息。

如果您阅读了此文件适配器类 here 上的ZF2文档,那么您可以看到adaper具有getMessages方法。这可能会让您对实际出现的问题有所了解:

$adapter = new Zend\File\Transfer\Adapter\Http();
$adapter->setDestination('public/img/upload');

if (!$adapter->receive()) {
    $messages = $adapter->getMessages();
    echo implode("\n", $messages);
}

此代码段直接来自官方文档!

答案 1 :(得分:1)

您的最终运行代码确保您评论过滤器

public function uploadAction()
    {
        error_reporting(0);
        $em = $this->getEntityManager();
        $form = new UploadForm($em);
        $form->get('submit')->setValue('Add');
        $request = $this->getRequest();
        if ($request->isPost()) 
        {
            $profile = new Upload();
            $form->setInputFilter($profile->getInputFilter());

            $nonFile = $request->getPost()->toArray();
            $File    = $this->params()->fromFiles('fileupload');
            $data = array_merge_recursive($request->getPost()->toArray(), $request->getFiles()->toArray());
            //print_r($data);die;
            //set data post and file ...
            $form->setData($data);

            if ($form->isValid()) 
            {  
                 $favicon = $data['fileupload']['name'];
                 $ext = pathinfo($favicon, PATHINFO_EXTENSION);
                 $faviconnewname = "_favicon." . $ext;
                 $favadapter = new \Zend\File\Transfer\Adapter\Http();
                 $favadapter->setDestination('public/img/upload/'); //upload destination
                 //$favadapter->addFilter('Rename', $faviconnewname, $favicon);
                 if (!$favadapter->receive())
                 {
                     $messages = $adapter->getMessages();
                     echo implode("\n", $messages);
                 }
                 else
                 {
                     echo "success";
                 }
                // die;
            }
        }
//        if ($request->isPost()) 
//        {
//            $fname = $_FILES['fileupload']['name']; 
//            $tmp_name = $_FILES["fileupload"]["tmp_name"];
//            $uploads_dir = 'public/img/upload';
//            if(move_uploaded_file($tmp_name,"$uploads_dir/$fname"))
//            {
//                echo "Uploaded";
//            }
//            else
//            {
//                echo "Error";
//            }
//        }
        return array('form' => $form);
    }