Ir para conteúdo

POWERED BY:

Arquivado

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

P3rukao

Upload de arquivos de audio

Recommended Posts

Hmmm... eu modifiquei aquela classe que mostrei acima... (post#9), mas ainda não está funcionando aqui... não aparece nada na tela, quando eu chamo o o construtor da classe!!!!

 

EIS

<?php
	### Classe Upload Midia
class upload{
	# Declaração das propriedades
	private $nome;
	private $arquivo;
	private $tipo;
	private $tamanho;
	private $temp;
	private $mime = array('audio/mp3','audio/mpeg','audio/mpeg3','audio/mpg');
	private $ext;
	private $tamanho_max = 6000000;
	private $nomeMidia;
	### Método construtor
	## Paramentro: o array do arquivo a ser gravado
	# Pega os dados a partir do array arquivo
	public function __construct($arquivo){
		$this->nome = $arquivo['name'];
		$this->tipo = $arquivo['type'];
		$this->tamanho = $arquivo['size'];
		$this->temp = $arquivo['tmp_name'];
	}

	# Verifica o MIME da imagem
	public function verificaMime(){
		if(in_array($this->tipo, $this->mime)){
			$valida = true;
		}else{
			$valida = false;
		}
		return $valida;
	}
	
	# Verifica o TAMANHO do arquivo
	public function verificaTam(){
		if($this->tamanho > $this->tamanho_max){
			$valida = false;
		}else{
			$valida = true;
		}
		return $valida;
	}
	
	# Verifica a extensão do arquivo
	public function extension($midia){
		switch($this->tipo){
			case $mime[0]:				
				$this->ext = "mp3";
				break;
			case $mime[1]:				
				$this->ext = "mp3";
				break;
			case $mime[2]:				
				$this->ext = "mp3";
				break;
			case $mime[3]:				
				$this->ext = "mp3";
				break;
			default:				
				$this->ext = "mp3";
			break;
		}
		return $midia;
	}


	## Mero método para facilitar a vida de quem usa
	# Ele pega um path relativo e transforma em absoluto
	public function ajustaPath($path){
		$path = realpath($path);
		$path = str_replace("\\", "/", $path);
	}

	### Método para o upload
	## Parametros:
	## $nova_largura
	## $path (endereço relativo)
	## $novo_nome
	# abre a imagem, redimensiona e salva no lugar especificado com o nome especificado
	
	public funtion salvaMp3($path, $novo_nome) {

		 //verifica mime isso ta na função verifica, mas com e so pra mp3 vou fazer aqui mesmo
		if ($this->verificaMime() && $this->verificaTam()) {
			$this->ajustaPath($path);
			
			$nome = uniqid($novo_nome) . substr($this->nome, strlen($this->nome)-3);
			$novo_nome = substr($nome,0, strlen($nome)-3);
			//envia o arquivo para o servidor
			move_uploaded_file($this->temp, "".$path."/".$novo_nome.$this->ext."");
		}
				else
		{
			header("Location: index.php?erro=1");
		}
	}	
	
	public function getNomeFile(){
		$nomeFile = $this->nomeMidia;
		return $nomeFile;
	}

	public function __destruct(){

	}
} //end class
?>

 

AQUI O INDEX.PHP

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<form action="recebeUpload.php" method="post"  enctype="multipart/form-data">
Envie sua foto para o site! <input type="file" name="midia"><BR>
<input type="submit" value="Enviar Midia!">
</form>
<?
	if($_GET['erro'])
	{
		switch($_GET['erro'])
		{
			case 1: echo "Naum deu!!!"; break;
			default : echo ""; break;
		}
	}
?>
</body>
</html>

 

AQUI O ARQUIVO recebeUpload.php

<?
	include("classe_mp3.php");
	
	$midia = $_FILES['midia'];
	
	$up = new upload($midia);
	
	echo "<br />endereco da midia: ";

	$path = "midia/";
	$novo_nome = "mda_";
	
	$up->salvaMp3($path, $novo_nome);
	
	echo "<br />endereco da midia: ".$up->getNomeFile();	
?>

Existe um diretorio chamado "midia", que eh pra onde eu redireciono os arquivos....

 

 

» Alguem pode me ajudar a achar o erro??

 

 

-----------

 

Eu modifiquei aquele outro script para usar o if(count($erro)==0){}, mas ele também não funciona aqui... soh pega com o if(count($erro)){}... =/

 

Então modifiquei de vez:

 

<?
$arquivo = isset($_FILES["midia"]) ? $_FILES["midia"] : FALSE;
$config = array();
// Tamano máximo da midia, em bytes
$config["tamanho"] = 106883;

// Diretório onde a midia será salva
$config["diretorio"] = "midia/";
$mime = array('audio/mp3','audio/mpeg','audio/mpeg3','audio/mpg');

// Gera um nome para a midia e verifica se já não existe, caso exista, gera outro nome e assim sucessivamente..
// Função Recursiva

function nome($extensao)
{
	global $config;

	// Gera um nome único para a midia
	$temp = substr(md5(uniqid(time())), 0, 10);
	$midia_nome = $temp . "." . $extensao;
	
	// Verifica se o arquivo já existe, caso positivo, chama essa função novamente
	if(file_exists($config["diretorio"] . $midia_nome))
	{
		$midia_nome = nome($extensao);
	}

	return $midia_nome;
}

if($arquivo)
{	
	$erro = true;
	
	// Verifica o mime-type do arquivo para ver se é de midia.
	// Caso fosse verificar a extensão do nome de arquivo, o código deveria ser:
	//if(!eregi("^audio\/(mp3|mpeg|mpeg3|mpg)$", $arquivo["type"]))
	if(!in_array($arquivo["type"], $mime))
	{
		//$erro[] = "Arquivo em formato inválido! A midia deser mp3 ouo etc. Envie outro arquivo";
		header("Location: index.php?erro=1");
	}
	else
	{
		// Verifica tamanho do arquivo
		if($arquivo["size"] > $config["tamanho"])
		{
			header("Location: index.php?erro=2");
			//$erro[] = "Arquivo em tamanho muito grande! A midia deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
		}
	}

	if($erro = true)
	{
		// Pega extensão do arquivo, o indice 1 do array conterá a extensão
		preg_match("/\.(mp3|mpeg|mpeg3|mpg){1}$/i", $arquivo["name"], $ext);
		
		// Gera nome único para a midia
		$midia_nome = nome($ext[1]);

		// Caminho de onde a midia ficará
		$midia_dir = $config["diretorio"] . $midia_nome;

		// Faz o upload da midia
		move_uploaded_file($arquivo["tmp_name"], $midia_dir);
		
		header("Location: index.php?ok=1");
	}
	elseif($erro = false)
	{
		header("Location: index.php?erro");
	}
	
}
?>

» MAS ELE AINDA ESTÁ ACEITANDO QQR TIPO DE ARQUIVO, E COM QQR TAMANHO!!! =/

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte, gente...

 

Eu mudei a verificação do mime type do arquivo, e agora, eu já estou conseguindo fazer o upload do mp3 direitinho... porém, a verificação não está funfando 100%, pois eu alterei um arquivo de imagem (.gif) para (.mp3), e ele aceitou numa boa...

 

O script q estou usando eh esse óh:

$arquivo = isset($_FILES["midia"]) ? $_FILES["midia"] : FALSE;
$mime = 'audio/mpeg';
if($arquivo)
{	
	$erro = true;
	// Verifica o mime-type do arquivo para ver se é de midia.
	if($arquivo["type"] != $mime)
	{	   
		$erro = false;
		//meu codigo
	}
	//continuacao do meu codigo
}

Esse aí eh um trecho do script que recebe os dados do meu form...

Eu não consigo entender esse erro... pois de acordo com todo mundo... basta fazer isso pra funcionar... mas ainda está aberto para hackers invadirem desse jeito... =/

 

» Tem algo de errado no que eu fiz???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, eu tow tentando que soh a bixiga fazer esse ecript funcionar... mas num tá rolando nem apaw http://forum.imasters.com.br/public/style_emoticons/default/pinch.gif

Já segui todas as recomendações que me passaram... olhei varios tutos, mas aqui continua com problemas...

Eu só consigo fazer o upload de UM arquivo em específico.... (um mp3 de 1.4 MB), mas os outros de 3,4 ou mais MB's naum funciionam aqui... e o erro que ele retorna eh de que o MIME tá errado!!!

 

Oh o script completo aqui:

 

<?
include ("../_incs/server_admin.php");
include ("../_incs/funcoes.php");
// Prepara a variável caso o formulário tenha sido postado
$arquivo = isset($_FILES["midia"]) ? $_FILES["midia"] : FALSE;

$config = array();
//$config["tamanho"] = 10900000; Tamano máximo da midia, em bytes
$config["tamanho"] = 10485760; // Tamano máximo da midia, em bytes = 10MB

$redirectPage = $serverAdmin."sistema_radio/cadRadio.php";

// Diretório onde a midia será salva
$config["diretorio"] = "midia/";
//$mime = array('audio/mp3','audio/mpeg','audio/mpeg3','audio/mpg');
//$arquivo['type') != 'audio/mpeg'
$mime = 'audio/mp3';

$categoria = $_POST['categoria'];
$novo_nome = $categoria."_";

// Gera um nome para a midia e verifica se já não existe, caso exista, gera outro nome e assim sucessivamente..
// Função Recursiva

function nome($extensao)
{
	global $config;

	// Gera um nome único para a midia
	$temp = substr(md5(uniqid(time())), 0, 10);
	$midia_nome = $novo_nome . $temp . "." . $extensao;
	
	// Verifica se o arquivo já existe, caso positivo, chama essa função novamente
	if(file_exists($config["diretorio"] . $midia_nome))
	{
		$midia_nome = nome($extensao);
	}
	return $midia_nome;
}

if($arquivo)
{	
	$erro = true;
	// Verifica o mime-type do arquivo para ver se é de midia.
	// Caso fosse verificar a extensão do nome de arquivo, o código deveria ser:
	if(!eregi("^audio\/(mp3|mpeg|mpeg3|mpg)$", $arquivo["type"]))
	//if($arquivo["type"] != $mime)
	{
		//$erro[] = "Arquivo em formato inválido! A midia deve ser em formato mp3. Envie outro arquivo";
		$erro = false;
		Redirecionar_URL($redirectPage."?erro=1");
	}
	else
	{
		// Verifica tamanho do arquivo
		if($arquivo["size"] > $config["tamanho"])
		{
			//$erro[] = "Arquivo em tamanho muito grande! A midia deve ser de no máximo " . $config["tamanho"] . " bytes. Envie outro arquivo";
			$erro = false;
			Redirecionar_URL($redirectPage."?erro=2");
		}
	}

	if($erro == true)
	{
		// Pega extensão do arquivo, o indice 1 do array conterá a extensão
		preg_match("/\.(mp3|mpeg|mpeg3|mpg){1}$/i", $arquivo["name"], $ext);
		
		// Gera nome único para a midia
		$midia_nome = nome($ext[1]);

		// Caminho de onde a midia ficará
		$midia_dir = $config["diretorio"] . $midia_nome;
		
		// Faz o upload da midia
		move_uploaded_file($arquivo["tmp_name"], $midia_dir);
		
		include("recebeCadRadio.php");
	}
	elseif ($erro == false)
	{
		Redirecionar_URL($redirectPage."?erro=0");
	}
}
?>

Se v6 puderem me dar uma mãozinha aqui, vou agradecer muuito.... meu tempo tá acabando aqui... e a "luz no fim do túnel" tá ficando mais distante.... http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

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.