zend framework带有部分条件的文件上传

来源:互联网 发布:射手男 知乎 编辑:程序博客网 时间:2024/06/05 00:38

文件上传在重命名的时候做的不好!

IndexController如下:

 public functionuploadAction ()

    {

        $this->getFrontController()->setParam('noViewRenderer',true);

       //实例化文件上专类

        $adapter = new Zend_File_Transfer_Adapter_Http();

        $fName = $this->_request->getPost('uploadedfile');

        //上传文件路径

        $dir = "/tmp";

       //你存放上传文件的文件夹

        $adapter->setDestination($dir);

       //设置文件上传类型

        $adapter->addValidator('Extension',false

       array('gif','jpeg', 'jpg','doc'));

       //设置上传文件大小

        $adapter->addValidator('Size',false

       array('min'=> '1kB', 'max'=> '2MB'));

        //上传文件数量

        $adapter->addValidator('Count',false, 1);

        $adapter->addValidator('FilesSize',false

       array('min'=> '1kB', 'max'=> '2MB'));

        //重命名配置

        $fileInfo = $adapter->getFileInfo();//获取基本配置

        $extName = $this->getExtension($fileInfo);//获取扩展名

        $uName = $adapter->getFileName();

        $filename = $fileInfo['uploadedfile']['name'];//重命名

        $a = strrpos(strtolower($filename),".");

        $c = rand(1, 10);

        if ($fName != null || $fName == "") {

            if (file_exists($uName)) {

                if ($a) {

                    $b = substr(strtolower($filename), 0, $a);

                    $b .= $c;

                    $name = $b .'.' . $extName;

                    $adapter->addFilter('Rename'

                   array('target' => $name, 'overwrite' => true)); //执行重命名

                }

            }

        }

       //返回上传后出现的信息

        if (! $adapter->receive()) {

            $messages = $adapter->getMessages();

           //            foreach ($messages as $tmp) {

           //                echo $messages .= $tmp . "<br />";

           //            }

            echo $messages = "文件上传失败!请<a href='" .

             $this->view->baseUrl() ."/index/index'>返回</a>";

        } else {

           //move_uploaded_file($uName, $this->view->baseUrl() . "/temp");

            echo $messages = "文件上传成功!请<a href='" .

             $this->view->baseUrl() ."/index/index'>返回</a>";

        }

    }

   //获取扩展名

    public function getExtension ($name)

    {

        $fname = '';

        if ($name) {

            foreach ($name as $val) {

                $fname = $val['name'];

            }

            $exts = @split("[/\\.]", $fname);

            $n = count($exts) - 1;

            $exts = $exts[$n];

            return $exts;

        }

    }


视图如下:

<formaction="<?phpecho $this->baseUrl();?>/index/upload/"method="post"enctype="multipart/form-data">

<inputtype="hidden"name="MAX_FILE_SIZE"/>

请选择您的上传文件:<inputname="uploadedfile"type="file"/><br/>

<inputtype="submit"value="文件上传"/><br>

</form>