1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Duvida] [PHP] Limitar upload de ficheiros

Discussão em 'Web Development' iniciada por NoNameUser, 21 de Novembro de 2008. (Respostas: 6; Visualizações: 1288)

  1. NoNameUser

    NoNameUser Power Member

    boas, actualmente tenho isto:
    PHP:
    <?
    $file_name $HTTP_POST_FILES['ufile']['name'];
    $fileSize $_FILES['ufile']['size'];

    if ( 
    $fileSize 30000)
    echo (
    "Ficheiro muito grande: "$fileSize"bytes");
    exit;

    if(
    $file_name!="")
    {
        
    $random_digit=rand(0000,9999);
        
    $new_file_name=$random_digit.$file_name;
        
        
    $path"../uploads/".$new_file_name;
        if(
    $ufile != none)
        {
            if(
    copy($HTTP_POST_FILES['ufile']['tmp_name'], $path))
            {
                echo 
    "Imagem do filme guardada.<BR/>";
            }
            else
            {
                echo 
    "<font color=red>Error ao gravar a imagem.<BR/></font>";
            }
        }
    }
    ?>
    Eu pretendo limitar o envio de ficheiros para que os utilizadores não se excedam, só que surge um problema, com o codigo que estou a usar, se o utilizador enviar 1Kb a mais, vai ficar bastante tempo á espera e só depois e que aparece o erro.
    Como posso fazer com que apareça logo o erro sem que o utilizador tenha que estar a espera.

    Ja agora, quanto é que da 10MB em bytes :D

    Obrigado desde ja.
     
  2. AliFromCairo

    AliFromCairo Power Member

    Para converteres Megabytes para bytes, precisas de multiplicar por 1024 duas vezes. Ou seja, 10 MB = 10 * 1024 KB = 10 * 1024 * 1024 bytes. Alternativamente, podes escrever "10MB to bytes" no Google que vais obter a resposta (10485760 bytes).
     
  3. NoNameUser

    NoNameUser Power Member

    Ok, brigadão.

    Agora precisava era que me ajudassem no limitador de envio.
    Não precisa de ser em PHP, pode passar por javascript antes... ou outra linguagem qualquer
    Abraço
     
  4. AliFromCairo

    AliFromCairo Power Member

    Em princípio, se o tamanho do ficheiro for maior do que o limite que definiste no teu código, isso não deveria acontecer. Tenta colocar o valor correcto em bytes e usa o operador >=. Já agora, coloca também parênteses a seguir ao if, e depois do exit.
     
  5. NoNameUser

    NoNameUser Power Member

    O codigo esta a funcionar, o problema e que se enviar um ficheiro com 10,1Mb (sendo o limite 10) o utilizador vai ter que esperar +/- 5min e so depois dá um erro, isto porque, pelo que eu percebi, o ficheiro é enviado à mesma, só depois e verificado e só depois e enviado o erro.
    Eu quero e que quando o utilizador clique no submeter, algo verifique o tamanho do ficheiro e se for superior a 10MB que impessa de avançar.


    Abraço
     
  6. AliFromCairo

    AliFromCairo Power Member

    Hmm, dá uma vista de olhos por aqui.
     
  7. NoNameUser

    NoNameUser Power Member


    Isto é fixe, mas so funciona em IE, no FireFox nao da.
    Nao me consegues arranjar outro parecido.
    Desde ja obrigado pelo tempo
    :)
     

Partilhar esta Página