Ir para conteúdo
Fórum Script Brasil
  • 0

Upload de arquivo grande


3l3tr1c

Pergunta

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 para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...