Jump to content

Como limitar o tamanho do ficheiro em upload?


nuno_couto

Recommended Posts

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.

Link to comment
Share on other 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?

portalmundial.net »» criamos sites

Link to comment
Share on other 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.

Link to comment
Share on other 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.

Desaparecido.

Link to comment
Share on other 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.

portalmundial.net »» criamos sites

Link to comment
Share on other 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.

Link to comment
Share on other 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 :|

portalmundial.net »» criamos sites

Link to comment
Share on other sites

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.