Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vinícius iSecretária

Classe Upload completa e simples

Recommended Posts

_classUpload.php

 

<?php

/*********************************************************************
* Criada por Vinícius 
* op.vini@gmail.com ou www.isecretaria.net/vinicius
**********************************************************************/

class Upload{
	
	var $maxSize 		= 8000; // 8 MB, tamanho máximo permitido
	var $sobrescrever	= 0;	// 0 NÃO, 1 SIM, sobrescrever o arquivo se ele existir
	var $allowBlank		= 1;	// 0 NÃO, 1 SIM, deixar campo em branco
	var $blockExt		= 0;	// 0 NÃO, 1 SIM, bloquear extensões de arrExtBlocks
	var $liberaExt		= 0;	// 0 NÃO, 1 SIM, liberar apenas extensões de arrExtPermit
	
	var $arrExtPermits	= array();		// array com extensões permitidas, liberaExt deve ser 1
	var $arrExtBlocks	= array();		// array com extensões que não são permitidas blockExt deve ser 1
	
	var $fileName	= "";
	var $fileTmp	= "";
	var $fileSize	= 0;
	var $destino	= "";
	
	var $error	= "";
	
	protected $cfg;
	protected $ext;
	protected $arq;
	protected $i;
	
	
	function enviar(){
		
		if( $this->fileName != "" )
		{
			$this->cfg = explode(".", $this->fileName);
			$this->ext = $this->cfg[ count($this->cfg)-1 ];
			$this->arq = str_replace(".".$this->ext, "", $this->fileName);
		}
		
		
		if( !$this->allowBlank && $this->fileName == "" )	$this->error .= "Upload Error 1: não foi passado nenhum arquivo.";
		if( ($this->fileSize / 1024) > $this->maxSize ) 	$this->error .= "Upload Error 2: o arquivo é maior que o máximo permitido.";
		
		if( $this->blockExt && in_array(strtolower($this->ext),$this->arrExtBlocks) && $this->fileName != "" )
			$this->error .= "Upload Error 5: a extensão '".$this->ext."' não é permitida.";
		
		if( $this->liberaExt && !in_array(strtolower($this->ext),$this->arrExtPermits) && $this->fileName != "" )
			$this->error .= "Upload Error 6: a extensão '".$this->ext."' não é permitida.";
		
		if( $this->fileName != "" && $this->destino != "" && !$this->sobrescrever)
		{
			if( file_exists( $this->destino.$this->fileName ) )
			{					
				$this->i 		= 2;
				while( file_exists($this->destino.$this->arq."(".$this->i.").".$this->ext) ) $this->i = $this->i + 1; 
				$this->fileName = $this->arq."(".$this->i.").".$this->ext;
			}
		}
		else if( $this->destino == "" ) $this->error .= "Upload Error 3: não foi encontrado um destino.";
			
		
		if( $this->error != "" ) 		return false;
		else if( $this->fileName == "" && $this->allowBlank  )	return true;
		else
		{	
			if( !move_uploaded_file( $this->fileTmp, $this->destino.$this->fileName ) )
			{
				$this->error .= "Upload Error 4: houve um erro no upload.".$this->fileTmp;
				return false;
			}
			else return true;
		}
	}
	
	
}

?>

 

UTILIZANDO, neste exemplo só aceitará extensão MP3:

<?
	include "_classUpload.php";

	$upload = new Upload;

	$upload->liberaExt		= 1;
	$upload->maxSize		= 100000;
	$upload->arrExtPermits	= array('mp3');
	
	$upload->destino  = "/";
	$upload->fileName = $_FILES['audio']['name'];
	$upload->fileSize = $_FILES['audio']['size'];
	$upload->fileTmp  = $_FILES['audio']['tmp_name'];
	
	if(!$upload->enviar()){
		echo '{success: false, msg: "'.$upload->error.'"}';
		exit;
	}
?>

 

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa amigo estava a procura de algo para estudo sera que poderia por um exemplo do codigo funcionando com o form etc.. vlw ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala amigão, considere o último exemplo em PHP que deixei sendo upload.php, segue um simples formulário para envio:

<form id="form" name="form" enctype="multipart/form-data" method="post" action="upload.php">
    <input type="file" name="audio" id="audio" />
</form>

abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem bacana essa tua classe aí... mas achei uma outra na net que é um pouco mais robusta: http://www.verot.net/php_class_upload_samples.htm

 

Ela, além de enviar imagens e fazer a manipulação das mesmas... também serve pra enviar arquivos normais... como arquivos de áudio... de texto (.doc), ou até mesmo .PDF...

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito interessante...

Estou tomando uma surra com uma extensao (MX Kollection, upload e resize image), até então eu vinha usando esta, mas a alguns dias parou de funcionar. Estou precisando de uma classe como esta para upload. Ótimo.

 

Uma pergunta, alguem saberia o que preciso fazer para jogar o caminho em um banco de dados (Mysql)?

 

A outra classe que o colega comentou acima, verifiquei no site, tem um recurso muito interessante, o de redimencionar o eixo Y proporcional ao X. Tava pensando em agregar este recurso nesta sua. Mas ainda me faltaria gravar o caminho do DB.

 

Alguém pode me dar uma luz, pode ser um link com algum material, qualquer coisa ajuda. Ja dei uma olhada na net em varios ecripts, mas nao consegui uni-los afim de efetuar o "upload da foto" + "resize" + "caminho no DB".

 

Agradeço desde já a ajuda dos colegas.

 

Sandro M. Ferreira

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.