nuno_couto Posted June 18, 2006 at 09:27 PM Report #33653 Posted June 18, 2006 at 09:27 PM 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
Guest id194 Posted June 18, 2006 at 09:37 PM Report #33654 Posted June 18, 2006 at 09:37 PM 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.
nuno_couto Posted June 18, 2006 at 09:53 PM Author Report #33658 Posted June 18, 2006 at 09:53 PM 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
Guest id194 Posted June 19, 2006 at 01:20 AM Report #33716 Posted June 19, 2006 at 01:20 AM 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.
TheDark Posted June 19, 2006 at 02:00 AM Report #33725 Posted June 19, 2006 at 02:00 AM 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.
Guest id194 Posted June 19, 2006 at 12:23 PM Report #33765 Posted June 19, 2006 at 12:23 PM 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...
TheDark Posted June 19, 2006 at 04:27 PM Report #33776 Posted June 19, 2006 at 04:27 PM Mas ao menos já não envia por exemplo 100MB quando o tamanho máximo é 2MB... isto se funcionar, porque não experimentei :😉 Desaparecido.
nuno_couto Posted June 19, 2006 at 11:28 PM Author Report #33828 Posted June 19, 2006 at 11:28 PM 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
kingless Posted June 20, 2006 at 03:56 AM Report #33846 Posted June 20, 2006 at 03:56 AM 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.
entering Posted June 20, 2006 at 08:17 AM Report #33852 Posted June 20, 2006 at 08:17 AM 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.
nuno_couto Posted June 20, 2006 at 06:40 PM Author Report #33964 Posted June 20, 2006 at 06:40 PM 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
TheDark Posted June 20, 2006 at 09:03 PM Report #33995 Posted June 20, 2006 at 09:03 PM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now