• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nuno_couto

Como limitar o tamanho do ficheiro em upload?

12 mensagens neste tópico

Boas.

Num sistema de formulário em html, ligado a um script PHP, há a possibilidade de limitar o tamanho do ficheiro logo quando se clica no botão "submit" ou mesmo quando se selecciona o ficheiro?

Qual a melhor forma de limitar o tamanho do ficheiro?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a melhor forma é atraves de php... quando processares os resultados enviados pelo form, na variavel $_FILES (acho que é assim), tem lá algo sobre o tamanho, é só colocares um if e dps fazes o que queres.. lê o manual sobre essa variavel global que vais entender bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim eu percebo e isso sei fazer, mas sendo um ficheiro mt grande o utilizador faz na mesma o upload todo. E caso ultrapasse o limite do servidor vai dar um erro. Era necessário bloquear no form para que nem chegasse a fazer o upload, mesmo pela "carga" desnecessária no servidor. Será que há maneira?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes evitar que o utilizador envie um ficheiro que seja superiro ao tamanho estipulado da seguinte forma usando HTML:

<input type="hidden" name="MAX_FILE_SIZE" value="500" />

Este código tem de estar dentro do <form></form>. No entanto, segundo li por aí, acho que isto é facilmente contornável, se existir algum utilizador mais "brincalhão"  e sabichão, é bem capaz de conseguir submeter um ficheiro com tamanho superior ao estipulado. Uma bo prática, é implementares duas validações, esta, e depois no lado do servidor com PHP. Se o utilizador passou por cima desta protecção, azar o dele, teve o tempo todo a submeter o ficheiro po servidor, mas depois válidas e apagas o ficheiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

No entanto, segundo li por aí, acho que isto é facilmente contornável

Segundo li por aí, os próprios browsers ignoram essa tag...

Podes tentar a função ini_set, mas duvido que os SPs por aí te deixem mexer nessa função, mas não há como experimentar.

ini_set('upload_max_filesize', '2000000');

Esta linha limita o tamanho dos ficheiros recebidos pelo script em excução a 2000000 bytes.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas isso também só vai funcionar depois de o ficheiro ter sido totalmente enviado (ou chegar a esse limite) o objectivo era limitar antes de se enviar qualquer coisa para o servidor...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas ao menos já não envia por exemplo 100MB quando o tamanho máximo é 2MB... isto se funcionar, porque não experimentei :;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Quando submeti o post, a questão era relativamente à possibilidade de "bloquear" o envio de ficheiros maiores que um determinado limite definido.

Quanto ao limite no PHP, dá pra fazer pelo set_ini ou pelo próprio script, usando um comando condicional, if($size>x){delete file...} a logica seria qq coisa assim... e de facto eu tenho isso a trabalhar, mas a desvantagem é grande...

Imaginem que estamos a falar de um liimte de 20 MB, que é o caso do script que fiz, o utilizador fez um upload superior a 20 MB, que demorou 15 min ou mais, sobrecarregando desnecessáriamente o servidor, e com o respectivo consumo  de tráfego. Por isso penso que por segurança o script deve limitar o tamanho, mas apenas como precaução, uma vez que o limite deve ser imposto logo na selecção do ficheiro.

Caso alguem saiba ajudar nesta questão, agradeço que informe... é interessante para qualquer pessoa que queira fazer um script que envolva uploads.

Fiquem bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes tentar fazer isso:

if(round(filesize("uploads/exemplo.txt")/1024,1) > 1240)) {  //Isto verifica se o ficheiro é maior que 1 MB
unlink("uploads/exemplo.txt");    //Se for maior apaga o ficheiro
echo "O ficheiro é muito grande!"; // e mostra esta mensagem
} 

O upload não será bloqueado.... mas será verificado depois do upload se o ficheiro é maior que 1MB e se for maior vai ser apagado.. é como se não tivesse sido feito o upload.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

kingless mas isso nao adianta para o que ele quer, visto que ele não quer é sobrecarregar o servidor.

agora acho que nuno_couto o que pedes não é assim tao simples pois possivelmente o server onde esta a page não têm forma de verificar o tamanho do ficheiro antes de ser feito o upload.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Teoricamente.... seria simples.

O problema é que esse código existe, tal como mostrou o Nazgulled em cima... mas é ignorado pelos browsers... devia ser o próprio browser a verificar o tamanho dos ficheiros e não o faz... mas penso que com javascript talvez se consiga... so faltava perceber de javascript :|

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Responderam-te noutro dos tópicos que criaste em volta deste assunto que com javascript não consegues ver o tamanho dos ficheiros. A solução passaria talvez por Java ou Flash...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora