Beim Bildupload Dateinamen randomisieren

04.08.2010 | Zend Framework

z.B. in der createAction des AdsControllers: $adsForm = new Form_AdsForm(); $adsForm->setAction('/ads/create'); $adsForm->setMethod('post'); $this->view->setEncodin

z.B. in der createAction des AdsControllers:

 $adsForm = new Form_AdsForm();
        $adsForm->setAction('/ads/create');
        $adsForm->setMethod('post');
        $this->view->setEncoding('UTF-8');
            
        if ($this->getRequest()->isPost()) {
            if ($adsForm->isValid($_POST)) {
                $adsModel = new Model_Ads();
                /**
                 * Rename action für image-Upload
                 * @var unknown_type
                 */

                // Transferadapter fuer das Bild-Element erzeugen
                $adapter = $adsForm->getElement('image')->getTransferAdapter();
                $name = $adapter->getFileName('image');
                
                // Zufallstoken erstellen (ohne Punkte...)
                 $uniqueToken = str_replace(".","",uniqid(mt_rand(), true));
                // OriginalNamen holen fuer Extension
                $origname = basename($adsForm->image->getFileName());
                $path = "images/upload";
                //if (isset($identity->id)) $path .= "/". $identity->id; // kann keine Sub-Dirs anlegen
               
                // neuen Dateinamen aus Pfad, Zufallstoken und Orig-Extension erstellen
                $filename = $path. "/". $uniqueToken. substr($origname, strrpos($origname, '.'));

                // Rename-Filter setzen
                $adapter->addFilter('Rename', array('target' => $filename, 'overwrite' => false));

                // Bild hochladen, im Fehlerfall Errorcode zum Formular hinzufuegen
                if (!$adapter->receive()) {
                    $adsForm->addError($adapter->getMessages());
                }

                ... weitere Formulardatenverarbeitung u. redirect etc...

Analyse

Entwurf

Development

Launch