ZF2 FileUpload Collection

后端 未结 2 821
一生所求
一生所求 2021-02-09 01:04

I am unable to get my fileupload collection to work. This is what I\'ve done:

https://gist.github.com/manuakasam/1ac71daf7269616f55f0

2条回答
  •  不思量自难忘°
    2021-02-09 01:55

    The way i validated files in ZF2

    in composer.json

      "imagine/Imagine": "0.3.*",
    

    in your controller

    use Zend\Validatior\File\Size;
    use Imagine\Gd\Imagine;
    use Imagine\Image\Box;
    use Imagine\Image\Point;
    
    public function imageAction()
        {
    
            $id = ( int ) $this->params ()->fromRoute ( 'id', 0 );
            if (! $id) {
                return $this->redirect ()->toRoute ( 'newscategory' );
            }
    
            $form = new YourForm();
            $form->get ( 'link_id' )->setAttribute ( 'value', $id );
            $request = $this->getRequest();
            if ($request->isPost()) {
                // Make certain to merge the files info!
                $image = new Entityimage();
                $form->setInputFilter($image->getInputFilter());
                $post = array_merge_recursive(
                        $request->getPost()->toArray(),
                        $request->getFiles()->toArray()
                );
    
                $form->setData($post);
    
                if ($form->isValid()) {
    
                    $size = new \Zend\Validator\File\ImageSize(array(
                            'minWidth' => 30, 'minHeight' => 30,
                            'maxWidth' => 1024, 'maxHeight' => 920,
                    )); //minimum bytes filesize
                    $isImage = new \Zend\Validator\File\IsImage();
                    $mimeType = new \Zend\Validator\File\MimeType(array('image/gif', 'image/jpg','image/jpeg','image/png','enableHeaderCheck' => true));
                    $adapter = new \Zend\File\Transfer\Adapter\Http();
                    $adapter->setValidators(array($size), $post['fileupload']['name']);
                    $adapter->setValidators(array($isImage), $post['fileupload']['name']);
                    $adapter->setValidators(array($mimeType), $post['fileupload']['name']);
    
                    if (!$adapter->isValid()){
                        $dataError = $adapter->getMessages();
                        $error = array();
                        foreach($dataError as $key=>$row)
                        {
                            $error[] = $row;
                        }
                        $form->setMessages(array('fileupload'=>$error ));
                        $messages = $form->getMessages();
    
                        return $this->redirect ()->toRoute ( 'your route' );
                        // print_r($messages);die('file errors');
    
                    } else {
    
    
                        $adapter->setDestination('images/yourdir');
    
                        if ($adapter->receive($post['fileupload']['name'])) {
    
                            $image->exchangeArray($form->getData());
    
                            switch(strtolower($_FILES['fileupload']['type']))
                            {
                                case 'image/jpeg':
                                    $filename = imagecreatefromjpeg('images/yourdir/'.$post['fileupload']['name']);
                                    break;
                                case 'image/png':
                                    $filename = imagecreatefrompng('images/yourdir/'.$post['fileupload']['name']);
                                    break;
                                case 'image/gif':
                                    $filename = imagecreatefromgif('images/yourdir/'.$post['fileupload']['name']);
                                    break;
                                default:
                                    exit('Unsupported type: '.$_FILES['fileupload']['type']);
                            }
    
                            ob_start();
                            imagejpeg($filename);
                            // large image
                            $large = base64_encode(ob_get_contents()); // returns output
    
                            $mainimgWidth  = imagesx($filename);
                            $mainimgHeight = imagesy($filename);
    
                            $thumbWidth =   48;                        //intval($mainimgWidth / 4);
                            $thumbHeight =   floor( $mainimgHeight * ( $thumbWidth / $mainimgWidth  ) );   //intval($mainimgHeight / 4);
    
    
                            $new = imagecreatetruecolor($thumbWidth, $thumbHeight);
                            $backgroundColor = imagecolorallocate($new, 255, 255, 255);
                            imagefill($new, 0, 0, $backgroundColor);
                            imagecopyresampled($new, $filename, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $mainimgWidth, $mainimgHeight);
    
                            /** Catch the imagedata */
                            ob_start();
    
                            imagejpeg($new);
    
                            $data = ob_get_clean();
    
                            // Destroy resources
                            imagedestroy($filename);
                            imagedestroy($new);
    
                            // Set new content-type and status code
                            $thumb = base64_encode($data);
                            // imagine library was intsalled by the composer in the test server by amarjit
    
                            ob_end_clean();
    
                            $imagine = new Imagine();
                            //rename files
                            $filedata = array(
                                    'id'        => $post ['id'],
                                    'news_link_id'   => $post ['news_link_id'],
                                    'alt'       => $post ['alt'],
                                    'detail'    => $post ['detail'],
                                    'active'    => $post ['active'],
                                    'thumb'     => $thumb,
                                    'large'     => $large,
                                    'created'   => date('Y-m-d H:i:s'),
                                    'createdby'   => 1,
                            );
    
                            $id =  $this->getImageTable ()->save ( $filedata );
                            $imagine->open('images/yourdir/'.$post['fileupload']['name'])
                            ->save('images/yourdir/filename-'.$id.'.jpg');
                            /**
                             * delete the origional uploaded file;
                            */
                            unlink('images/yourdir/'.$post['fileupload']['name']);
                            return $this->redirect ()->toRoute ( 'newscategory' );
    
                        }
                    }
                }else{
                    $messages = $form->getMessages();
    
                }
            }
    
            return array (
    
                    'id' => $id,
                    'form' => $form,
    
            );
        }
    

提交回复
热议问题