Jump to content

Como limitar o tamanho do ficheiro em upload?


Recommended Posts

Posted

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?

portalmundial.net »» criamos sites

Posted

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.

Posted

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?

portalmundial.net »» criamos sites

Posted

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.

Posted

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.

Desaparecido.

Posted

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...

Posted

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.

portalmundial.net »» criamos sites

Posted

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.

Posted

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.

Posted

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 :|

portalmundial.net »» criamos sites

Posted

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...

Desaparecido.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.