0

Como descobrir o mime-type de arquivos de upload?

criado por Germano Ricardi em 29/06/2009 10:45pm
Buenas galera, td tranquilão por ai??

Seguinte, tenho um formulario criado com enctype="multipart/form-data", para fazer upload de arquivos mp3. Como estou preocupado com a segurança, faço toda a checagem através do mime-type uma vez que se fizer somente pela extensão pode ter gente q burle isso.

O problema é que nao consigo recuperar o mime-type, ja dei um print $_FILES["media_file"]["type"];
mas não exibe nada, já tentei comparar com o mime-type "audio/mpeg" como está descrito aqui nesta página http://www.w3schools.com/media/media_mimeref.asp, mas nada deu certo.

Como posso checar o mime-type de arquivos mp3?

Agradeço a atenção e a colaboração de quem me ajudar.

Grande abraço.

Lista de Respostas:

0
01/07/2009 12:39am
(~15 anos atrás)
Germano Ricardi respondeu:
opa... aumentei o tamanho do upload de 2mb para 10mb apenas para testar e o upload está funcionando perfeitamente agora, mas se alguém souber de algum outro problema parecido e como resolver postem ai, vamos nos ajudar!!!

Grande abraço.

0
06/07/2009 3:52pm
(~15 anos atrás)
Guilherme Medeiros respondeu:
Já deu um var_dump($_FILES["media_file"]["type"]); para ver se o mime é exibido?
Se ele não for exibido, verifique se o upload está podendo ser efetuado completamente utilizando outro arquivo.

Mas qualquer coisa, existe uma extensão PECL chamada fileinfo que pode te ajudar com mimetypes reais de arquivos.

Qualquer dúvida, olha nesta página aqui:
http://www.jellyandcustard.com/2006/01/19/php-mime-types-and-fileinfo/

precisa ter um pouco de conhecimento em ingles para entende-la.


Qualquer coisa, explique um pouco melhor esse seu problema, por que ainda não entendi o que você quer.

0
09/07/2009 2:24pm
(~15 anos atrás)
Daniel Alves respondeu:
Exemplo de como se usa Strtolower:

$extensao = strtolower(end(explode('.', $_FILES['arquivoupload']['nome'])));

a função acima retona a extenção do arquivo.


Como fazer o contole de arquivos para upload

$_UP['extensoes'] = array('mp3', 'wma', 'zip', 'rar');
aqui voce coloca a extenção que vc quer que seja verificada (nesse caso mp3, wma,zip, rar)

if (array_search($extensao, $_UP['extensoes']) === false) {
echo "Por favor, envie áudios com as seguintes extensões: mp3, wma<br>
Podem ser zipados em zip ou rar<br>";
} else {código para fazer upload}

esse IF aí em cima verifica se a extenção do arquivo a ser upado é a mesma das extenções
que vc definiu, se for ele faz o upload.

0
09/07/2009 2:26pm
(~15 anos atrás)
Daniel Alves respondeu:
Note que são 3 iguais para verificar ===

Espero ter ajudado

0
11/07/2009 6:26pm
(~15 anos atrás)
acho melhor partir para mime do arquivo mesmo.

0
28/07/2009 12:10pm
(~14 anos atrás)
Olá,

Lembre-se de verificar o upload_max_filesize. Se você esta tentando enviar um arquivo maior que o limite permitido, o arquivo será nulo, ou seja, nenhum "mime-type" irá aparecer.

Na dúvida, tente enviar um arquivo menos (um simples arquivo .txt por exemplo)

0
20/07/2011 9:53am
(~12 anos atrás)
só para constar:
strtolower converte os caracteres da string, deixando todas minúsculas.
não tem relação nenhuma com upload de arquivos.

-1
09/07/2009 1:57pm
(~15 anos atrás)
Daniel Alves respondeu:
Existe uma função chamada strtolower que pega a extenção dos arquivos a ser upados.

Nova Resposta:

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