0

Classe para manipulação de uploads

criado por Raphael Basso em 21/01/2007 6:45am
<p>Segue-se abaixo o código para PHP 5 como prometi. Não modifica muita coisa, somente o encapsulamento e a classe UploadArgs declarei como final, pois não precisa mais ser herdada. Outra coisa, apesar de você estar usando o PHP 5, o outro código também é para funcionar.
</p>

<div style="background-color : #e0e0e0; width : 560px; padding : 4px;">
&lt;?<span style="color : #ff0000">php</span><br /><br />
   
<span style="color : #009900">/********************/ </span><br />
   
<span style="color : #009900">/* Classe Upload    */ </span><br />
   
<span style="color : #009900">/* arabasso         */ </span><br />
   
<span style="color : #009900">/* 2007             */ </span><br />
   
<span style="color : #009900">/********************/ </span><br /><br />

   
<span style="color : #009900">// Classe Para Manipulação de Uploads - upload.class.php </span><br /><br />
   
class Upload<br />
   
{<br />
     
private<br />
         $data
;<br /><br />

     
public<br />
         $count
;<br /><br />

     
<span style="color : #009900">// Construtor da classe Upload</span><br /><br />

<!-- Função Construtora -->

     
public function __construct($index)<br />
     
{<br />

         
<span style="color : #009900">// Se o índice não for uma string</span><br /><br />

         
if (!is_string($index))<br />
           
die("&lt;b&gt;Erro:&lt;/b&gt; STRING esperada!");<br /><br />

         
<span style="color : #009900">// Se o array com este índice não existe</span><br /><br />

         
if (!isset($_FILES[$index]))<br />
           
die("&lt;b&gt;Erro:&lt;/b&gt; ÍNDICE indefinido!");<br /><br />

         
<span style="color : #009900">// Referência para a variável</span><br /><br />

         $this
->data = & $_FILES[$index];<br /><br />

         
<span style="color : #009900">// Número de elementos</span><br /><br />

         $this
->count = count($this->data["name"]);<br />
     
}<br /><br />

<!-- Função Argumento 1 -->

     
<span style="color : #009900">// Pega um elemento baseado no índice</span><br /><br />

     
public function arg($index)<br />
     
{<br />

         
<span style="color : #009900">// Se o índice for menor que 0 ou maior que o total</span><br /><br />

         
if ($index < 0 || $index > $this->count)<br />
           
die("&lt;b&gt;Erro:&lt;/b&gt; ÍNDICE inv&aacute;lido!");<br /><br />

         
<span style="color : #009900">// Retornando uma instância do objeto UploadArgs</span><br /><br />

         
return new UploadArgs($this->data, $index);<br />
     
}<br /><br />

<!-- Função Argumentos Array -->

     
<span style="color : #009900">// Retorna um array de objetos</span><br /><br />

     
public function args()<br />
     
{<br />

         $arr
= array();<br /><br />

     
<span style="color : #009900">// Adicionando instâncias ao array</span><br />

     
<span style="color : #009900">// array_push adiciona um elemento no final do array</span><br /><br />

         
for ($i = 0; $i < $this->count; $i++)<br />

            array_push
($arr, new UploadArgs($this->data, $i));<br /><br />

         
return $arr;<br />

     
}<br />

   
}<br /><br />
   
<span style="color : #009900">// Classe para Informações do Arquivo Enviado </span><br /><br />
   
final class UploadArgs<br />
   
{<br />
     
public<br />
         $name
, $size, $type, $tmpName, $error;<br /><br />

     
<span style="color : #009900">// Construtor da classe UploadArgs</span><br /><br />

<!-- Função Construtora -->

     
public function __construct(& $data, $index)<br />
     
{<br />
         $this
->name    = $data["name"][$index];<br />
         $this
->size    = $data["size"][$index];<br />
         $this
->type    = $data["type"][$index];<br />
         $this
->tmpName = $data["tmp_name"][$index];<br />
         $this
->error   = $data["error"][$index];
<br />
     
}<br /><br />

<!-- Função Move o arquivo enviado -->

     
<span style="color : #009900">// Move o arquivo para a pasta destino</span><br /><br />

     
public function move($destiny)<br />
     
{<br />

         
<span style="color : #009900">// Identificando o destino</span><br /><br />

         $destiny
.= $this->name;<br /><br />

         
<span style="color : #009900">// Movendo o arquivo</span><br /><br />

         move_uploaded_file
($this->tmpName, $destiny);<br />

     
}<br /><br />
   
}<br />
?&gt;
</div><br />

Comentários:

Nenhum comentário foi enviado ainda.

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)