Legal cara... O código ficou "biito" :)

Parabéns pela excelente colaboração Helio e Vinicius

On 6 set, 12:17, Vinicius Cruz <[EMAIL PROTECTED]> wrote:
> Bom, acabei também alterando algumas coisas do componente do Tulio, em
> cima do que Helio tinha alterado. Se me permite, Tulio.. =D
> As alterações são a seguinte:
> - Registro de log
> - Evita sobescrever, caso já exista um arquivo com mesmo nome. Nesse
> caso, ele renomeia arquivo
>
> Aproveitei e comentei o codigo.
> Uma recomendação a mais é não esquecer do enctype="multipart/form-
> data" do form.
>
> Obs.: Talvez o code não seja o mais perfeito e otimizado. Criticas e
> sugestões, estão abertas.
>
> <?php
> /**
>  * Upload class file.
>  *
>  * @Autor Tulio Faria
>  * @Contribuição Helio Ricardo, Vinicius Cruz
>  * @Linkhttp://www.tuliofaria.net
>  * @Licença MIT
>  * @Versão x.x $Data: xx-xx-2007
>  */
> class UploadComponent extends Object{
>     var $controller = true;
>     var $path = "";
>     var $maxSize; //Tamanho máximo permitido
>     var $allowedExtensions = array("jpg", "jpeg", "gif", "png"); //
> Arquivos permitidos
>     var $logErro = ""; //Log de erro
>
>     function startup(&$controller){
>         $this->path    = APP . WEBROOT_DIR . DS;
>         $this->maxSize = 2*1024*1024; // 2MB
>     }
>     function setPath($p)
>     {
>         if ($p!=NULL){
>             $this->path = $this->path . $p . DS;
>             $this->path = eregi_replace("/", DS, $this->path);
>             $this->path = eregi_replace("\\\\", DS, $this->path);
>             return true;
>         }
>     }
>     //Seta novo tamanho máximo
>     function setMaxFileSize($size)
>     {
>         $this->maxSize = $size;
>     }
>     //Adiciona nova extensão no array
>     function addAllowedExt($ext)
>     {
>         if (is_array($ext))
>         {
>             $this->allowedExtensions = array_merge($this->allowedExtensions, 
> $ext);
>
>         }else{
>             array_push($this->allowedExtensions, $ext);
>         }
>     }
>     //Retorna extensão de arquivo
>     function getExt($file)
>     {
>         $p = explode(".", $file);
>         return $p[count($p)-1];
>     }
>     //Exibe lista de extensões em array
>     function viewExt()
>     {
>         $list_tmp = "";
>         for($a=0; $a<count($this->allowedExtensions); $a++)
>         {
>             $list_tmp.= $this->allowedExtensions[$a].", ";
>         }
>         return substr($list_tmp, 0, -2);
>     }
>     //Verifica se arquivo pode ser feito upload
>     function verifyUpload($file)
>     {
>         $passed = false; //Variável de controle
>         if(is_uploaded_file($file["tmp_name"]))
>         {
>                 $ext = $this->getExt($file["name"]);
>             if((count($this->allowedExtensions) == 0) ||
> (in_array($ext, $this->allowedExtensions)))
>             {
>                 $passed = true;
>             }
>         }
>         return $passed;
>         }
>     //Copia arquivo para destino
>     function copyUploadedFile($source, $destination="")
>     {
>         //Destino completo
>         $this->path = $this->path . $destination . DS;
>         //Cabeçalho de log de erro
>         $logMsg = '=============== UPLOAD LOG ===============<br />';
>                 $logMsg .= 'Pasta destino: ' . $this->path . '<br />';
>                 $logMsg .= 'Nome do arquivo: ' . $_FILES[$source]["name"] . 
> '<br />';
>
>                 $logMsg .= 'Tamanho do arquivo: ' . $_FILES[$source]["size"] 
> . '
> bytes<br />';
>                 $logMsg .= 'Tipo de arquivo: ' . $_FILES[$source]["type"] . 
> '<br />';
>
>                 $logMsg .=
> '---------------------------------------------------------------<br />';
>
>                 $this->setLog($logMsg);
>         //Verifica se arquivo é permitido
>         if($this->verifyUpload($_FILES[$source]))
>         {
>             if(move_uploaded_file($_FILES[$source]["tmp_name"], $this->path . 
> $this->verifyFileExists($_FILES[$source]["name"])))
>
>                  return true;
>             else
>             {
>                  $this->setLog("-> Erro ao enviar arquivo<br />");
>                  $this->setLog("   Obs.: 
> ".$this->getErrorUpload($_FILES[$source]["error"])."<br />");
>
>                  return false;
>             }
>         }else
>         {
>             $this->setLog("-> O arquivo que você está tentando enviar
> não é permitido pelo administrador<br />");
>             $this->setLog("   Obs.: Apenas as extensões ".$this->viewExt()." 
> são permitidas.<br />");
>
>             return false;
>         }
>     }
>
>     //Gerencia log de erro
>     function setLog($msg)
>     {
>         $this->logErro.=$msg;
>     }
>     function getLog()
>     {
>         return $this->logErro;
>     }
>     function getErrorUpload($cod="")
>     {
>          switch($cod)
>          {
>             case 1:
>                                 return "Arquivo com tamanho maior que 
> definido no servidor.";
>             break;
>                     case 2:
>                                 return "Arquivo com tamanho maior que 
> definido no formulário de
> envio.";
>                         break;
>                         case 3:
>                                 return "Arquivo enviado parcialmente.";
>                         break;
>                         case 4:
>                                 return "Não foi possível realizar upload do 
> arquivo.";
>                         break;
>                         case 5:
>                                 return "The servers temporary folder is 
> missing.";
>                         break;
>                         case 6:
>                                 return "Failed to write to the temporary 
> folder.";
>                         break;
>                 }
>     }
>     //Checa se arquivo já existe no servidor, e renomea
>     function verifyFileExists($file)
>     {
>         if(!file_exists($this->path.$file))
>             return $file;
>         else
>             return $this->renameFile($file);
>     }
>     //Renomea Arquivo, para evitar sobescrever
>     function renameFile($file)
>     {
>         $ext = $this->getExt($file); //Retorna extensão do arquivo
>         $file_tmp = substr($file, 0, -4); //Nome do arquivo, sem
> extensao
>         do
>         {
>             $file_tmp.= base64_encode(date("His"));
>             echo $file_tmp."<br>";
>         }while(file_exists($this->path.$file_tmp.".".$ext));
>         return $file_tmp.".".$ext;
>     }}
>
> ?>
>
> On 1 set, 09:12, hostdesigner <[EMAIL PROTECTED]> wrote:
>
> > E qual foi a alteração e melhoria? o que isso facilita para o usuário?
> > Seria interessante informar isso, já que facilitaria para alguém na
> > hora de pesquisar aqui no grupo.
>
> > Falopa!


--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Cake PHP Português" do 
Grupos Google.
 Para enviar mensagens para este grupo, envie um email para 
[email protected]
 Para anular a inscrição neste grupo, envie um email para [EMAIL PROTECTED]
 Para mais opções, visite este grupo em 
http://groups.google.com/group/cake-php-pt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---

Responder a