Jump to content
Cassio Talle

Erro com o tamanho maximo de upload

Recommended Posts

Olá estou com o seguinte problema:

Tenho um script de upload, porém quando eu realizo um upload de arquivo maior do que o valor definido na diretiva upload_max_filesize do php.ini, ele retorna pra mim o seguinte erro..

 

Warning: POST Content-Length of 17281733 bytes exceeds the limit of 8388608 bytes in Unknown on line 0

Gostaria de saber se existe alguma forma de tratar esse erro sem ter que mexer no php.ini, mesmo que se o valor upload_max_filesize for aumentato mas se o usuário tentar carregar uma arquivo de tamanho superior aparecerá o mesmo erro.

 

obs. mesmo com o <input type="hidden" name="MAX_FILE_SIZE" id="MAX_FILE_SIZE" value="XXXX" /> definido se o tamnho do arquivo for maior do que o do MAX_FILE_SIZE o erro citado acima aparece.

 

desde já agradeço.

Share this post


Link to post
Share on other sites

Tudo vai depender das configurações do servidor em que o seu sistema está hospedado.

 

Se a sua hospedagem usar o cPanel por exemplo, você poderá criar um arquivo php.ini na raíz da sua hospedagem e setar somente esta diretiva que deseja.

 

Se não, geralmente você poderá setá-la usando um arquivo .htaccess se usar Apache.

 

Caso tenha interesse eu tenho um servidor dedicado com cPanel onde você pode setar as suas próprias configurações do PHP, me manda uma MP se desejar.

 

Um abraço!

Share this post


Link to post
Share on other sites

Eu entendo que se alterar a diretiva do php.ini eu posso aumentar o tamanho do arquivo que pode fazer o uoload, mas se eu aumentar esse valor para 10M e o usuário tentar fazer um upload de 11M o sistema reatornará aquela mensagem que eu já citei, eu gostaria na verdade de saber como eu posso tratar esse erro de forma que eu possa retornar para o meu usuário umsa mensagem de alerta migável ao ivés da mensagem de waring.

Edited by João Batista Neto
Remover quote desnecessário

Share this post


Link to post
Share on other sites

@Cassio Talle,

 

A primeira coisa a se fazer é desativar as mensagens de erro:

 

error_reporting( 0 );

 

Feito isso, você verificará o conteúdo da super global http://forum.imasters.com.br/public/style_emoticons/default/seta.gif $_FILES:

 

if ( isset( $_FILES[ 'arquivo' ] ) ){
$arquivo =& $_FILES[ 'arquivo' ];

if ( $arquivo[ 'error' ] !== 0 ){
	echo 'Lamentamos, mas não foi possível completar o upload de seu arquivo.';
} else {
	//...
}
}

Share this post


Link to post
Share on other sites

<?php

 

error_reporting(0);

 

$limite="10240000";// ou 10.000kb x 1024b = 10240000k =10 mega

$arquivo = $_FILES["arquivo"];

$arquivo_size = $arquivo["size"];

 

//verifica tamanho do arquivo

if($arquivo_size > $limite){

echo"<script>alert('Erro Tamanho do arquivo muito grande tamanho maximo permitido é [10 mega]');</script>";

echo"<script>history.back();</script>";

exit();

}

 

 

?>

Share this post


Link to post
Share on other sites

Continua aparecendo o mesmo erro.

 

vou postar o código aqui!

 

O erro se dá qunado um o tamanho do aquivo ultrapassa MAX_FILE_SIZE do php.ini

 

<?php
ini_set( 'display_errors', 0 );
//error_reporting( 0 );
if( isset( $_POST['enviar'] ) ) {
    $pathToSave = '/tmp/';
    $i = 0;
    $msg = array( );
    $arquivos = array( array( ) );
    foreach(  $_FILES as $key=>$info ) {
        foreach( $info as $key=>$dados ) {
            for( $i = 0; $i < sizeof( $dados ); $i++ ) {
                $arquivos[$i][$key] = $info[$key][$i];
            }
        }
    }

    $i = 1;
    foreach( $arquivos as $file ) {

        // Verificar se o campo do arquivo foi preenchido
        if( $file['name'] != '' ) {
            $arquivoTmp = $file['tmp_name'];
            $arquivo = $pathToSave.$file['name'];

            if( !move_uploaded_file( $arquivoTmp, $arquivo ) ) {
                $msg[$i] = 'Erro no upload do arquivo '.$i;
            } else {
                $msg[$i] = sprintf('Upload do arquivo %s foi um sucesso!',$i);
            }
        } else {
            $msg[$i] = sprintf('O arquivo %d nao foi preenchido',$i);
        }

        $i++;
    }
    foreach( $msg as $e ) {
        printf('%s<br>', $e);
    }

}

?>
<form method='POST' enctype='multipart/form-data'>
    Arquivo1: <input type='file' name='arquivo[]'><br>
    Arquivo2: <input type='file' name='arquivo[]'><br>
    <br>
    <input type='submit' value='Enviar' name='enviar'>
</form>

Share this post


Link to post
Share on other sites

Eu também estou com problema para fazer upload de imagens grande! Só que o meu não dá erro algum. Não sei o que estava havendo. Já alterei a upload_max_filesize = 35M, minha imagem tem até 25M e não da certo! Não dá erro algum... é como se o código que trata o arquivo deixasse e existir na execução! Tentei habilitar o error_reporting() e nada! A error_reporting = E_ALL & ~E_NOTICE está assim!

Share this post


Link to post
Share on other sites

Habilite todas as exibições de erro, como mostrado neste tópico, na Orientação No. 3

 

Você também deve alterar post_max_size. Siga as orientações deste artigo: http://blog.ultimatephp.com.br/upload-arquivo-php/

 

Se o problema persistir, abra um novo tópico com sua dúvida.

  • +1 1

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.