Jump to content
Fórum Script Brasil
  • 0

Upload de arquivo grande


3l3tr1c

Question

Sei que muitos falarão para eu procurar na web, mas sinceramente há quase uma hora estou tentando reverter esse problema e nada. Como o título sugere, tenho problemas ao enviar imagens acima de 1,2mb. Estou enviando a imagem e fazendo um tratamento nela, o script está rodando perfeitamente com todas as outras mas quando aumento o tamanho ele não envia. Já mudei as configurações de post_max_size, file_max_limit, set_time_limit(0) e mesmo assim nada! Alguém tem outra ideia? Obrigado!

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0
Mude a diretiva: upload_max_filesize

Por padrão ela é 2MB.

Seu script está retornando algum erro?

Opa! PHP.INI:

; Maximum allowed size for uploaded files.
; http://php.net/upload-max-filesize
upload_max_filesize = 128M

O padrão no meu é 128MB, estou testando local e na hospedagem e nada! Não há erro algum no script, pelo menos não é exibido, nem nos logs. O que acontece é que simplesmente a imagem é descartada sem aviso, não sei como isso acontece. Tá pau pra ajeitar essa b***, já tentei passar instruções por .htacces para o apache e nada!

Link to comment
Share on other sites

  • 0

Segue o código, lembrando que eu consigo fazer upload até 1,2mb, depois disso ele não envia o arquivo.

upload-file.php

$name                            =     basename($_FILES['uploadfile']['name']); 
    $format                            =    str_replace(array(' ','Þ', 'þ', 'Ð', 'ð', 'ß', 'Œ', 'œ', 'Æ', 'æ', 'µ', 'Š', 'Ž', 'š', 'ž', 'Ÿ', 'À', 'A', 'Á', 'Â', 'Ã', 'Ä', 'A', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'não', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø', 'Ù', 'Ú', 'Û', 'Ü', 'Y', 'à', 'á', 'â', 'ã', 'ä', 'å', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'não', 'ò', 'ó', 'ô'), array('_', 'TH', 'th', 'DH', 'dh', 'ss', 'OE', 'oe', 'AE',  'ae', 'u', 'S', 'Z',  's', 'z', 'Y', 'A', 'A',  'A', 'A', 'A', 'A', 'A', 'C', 'E', 'E', 'E', 'E',  'I', 'I', 'I', 'I', 'N', 'O', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 'a', 'a', 'a',  'a', 'a', 'a', 'c', 'e', 'e', 'e', 'e', 'i', 'i', 'i', 'i', 'n', 'o', 'o', 'o'), $name);
    $file                             =    $uploaddir.$format; 
    $size                            =    $_FILES['uploadfile']['size'];

            if($size>5120000){
                
                unlink($_FILES['uploadfile']['tmp_name']);
                exit;
                
            }

        /*------------------------------------------------------CONVERTER------------------------------------------------------*/
            $imgGrande         = imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']);
            //$imgFormato        = imagecreatefromjpeg($_FILES['uploadfile']['type']);
            
            
            $xGrande           = imagesx($imgGrande);
            $yGrande           = imagesy($imgGrande);

            if($xGrande<1000){
                        
                $novaGrande         = imagecreatetruecolor($xGrande,$yGrande);
                imagecopyresampled($novaGrande, $imgGrande, 0, 0, 0, 0, $xGrande,$yGrande, $xGrande,$yGrande);
                
                imagejpeg($novaGrande, $file);
                
            }else if($xGrande<2000){

                $proporcao        = $xGrande/$yGrande;
                
                $novaLargura    = $xGrande*(80/100);
                $novaAltura        = $yGrande*(80/100);

                
                $novaGrande         = imagecreatetruecolor($novaLargura, $novaAltura);
                imagecopyresampled($novaGrande, $imgGrande, 0, 0, 0, 0, $novaLargura, $novaAltura, $xGrande, $yGrande);
                
                imagejpeg($novaGrande, $file);
                
            }else if($xGrande>=2000){
                
                $proporcao        = $xGrande/$yGrande;
                
                $novaLargura    = $xGrande*(60/100);
                $novaAltura        = $yGrande*(60/100);

                
                $novaGrande         = imagecreatetruecolor($novaLargura, $novaAltura);
                imagecopyresampled($novaGrande, $imgGrande, 0, 0, 0, 0, $novaLargura, $novaAltura, $xGrande, $yGrande);
                
                imagejpeg($novaGrande, $file);
                
            }

        /*---------------------------------------------------------FIM----------------------------------------------------------*/
        
       /*------------------------------------------------------Cria Thumb------------------------------------------------------*/
            $imgThumb     = imagecreatefromjpeg($dir.$format);
            
            $x           = imagesx($imgThumb);
            $y          = imagesy($imgThumb);
            
            $nova         = imagecreatetruecolor('120','80');
            imagecopyresampled($nova, $imgThumb, 0, 0, 0, 0, '120', '80', $x, $y);
            
            imagejpeg($nova, $novoDir."/".$format);
        /*---------------------------------------------------------FIM-------------------------------------------------------*/

Eu troquei o nome de alguns diretórios para a segurança da minha aplicação, mas é isso daí. Eu chamo essa programação a partir de um plugin para upload em jQuery, mas nele há a opção de marcar o tamanho máximo e eu já coloquei 5mb, tanto é que eu consigo enviar um arquivo com mais de 1,2mb mas ele "desaparece", não é criado dentro do diretório com os outros.

Link to comment
Share on other sites

  • 0

você terá que testar parte por parte para ver onde o script está parando.

por exemplo.

if($size>5120000){
 unlink($_FILES['uploadfile']['tmp_name']);
 echo 'O script parou na validação de tamanho do arquivo!';
 exit;

}

E assim por diante...

Link to comment
Share on other sites

  • 0

[RESOLVIDO] Descobri o problema! Era apenas a unidade usada na determinação do tamanho da imagem. Me confundi e achei que era em KB, então eu multipliquei 5 x 1024, achando que iria ser 5MB, mas o correto era 1024 x 1024 x 5, porque a unidade do $_FILES['arquivo']['size'] é em Bytes. Valeu galera!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...