Upload images larger than 2mb



  • I have a simple system that uploads the image to a folder and records the name and url in the database. But when I select an image greater than 2mb of error in the vain destination that is equal to $destine = "pasta/". namefoto

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset=utf-8" />
        <title>Upload de arquivos</title>
    </head>
    

    <body>

    <?php
    $host = 'localhost';
    $usuario = 'root';
    $senha = '';
    $banco = 'diary';

    $dsn = "mysql:host={$host};port=3306;dbname={$banco}";

    try
    {
    // Conectando
    $pdo = new PDO($dsn, $usuario, $senha);
    }
    catch (PDOException $e) {
    // Se ocorrer algum erro na conexão
    die($e->getMessage());
    }
    $categoria = $_POST['tag'];
    $autor = $_POST['autor'];
    $data = $_POST['datapublicacao'];
    if($autor == null){
    $autor = "Anônimo";
    echo $autor;
    }
    if($categoria == null){
    $categoria = "texto,simples,comum,desabafo";
    echo $categoria;
    }
    if($data == null){
    $data = date("d/m/Y");
    echo $data;
    }
    define('TAMANHO_MAXIMO', (4 * 1024 * 1024));
    // verifica se foi enviado um arquivo
    if(isset($_FILES['arquivo']['name']) && $_FILES["arquivo"]["error"] == 0)
    {

    echo "Você enviou o arquivo: &lt;strong&gt;" . $_FILES['arquivo']['name'] . "&lt;/strong&gt;&lt;br /&gt;";
    echo "Este arquivo é do tipo: &lt;strong&gt;" . $_FILES['arquivo']['type'] . "&lt;/strong&gt;&lt;br /&gt;";
    echo "Temporáriamente foi salvo em: &lt;strong&gt;" . $_FILES['arquivo']['tmp_name'] . "&lt;/strong&gt;&lt;br /&gt;";
    echo "Seu tamanho é: &lt;strong&gt;" . $_FILES['arquivo']['size'] . "&lt;/strong&gt; Bytes&lt;br /&gt;&lt;br /&gt;";
    
    $arquivo_tmp = $_FILES['arquivo']['tmp_name'];
    $nome = $_FILES['arquivo']['name'];
    
    
    // Pega a extensao
    $extensao = strrchr($nome, '.');
    
    // Converte a extensao para mimusculo
    $extensao = strtolower($extensao);
    
    // Somente imagens, .jpg;.jpeg;.txt;.gif;.png
    // Aqui eu enfilero as extesões permitidas e separo por ';'
    // Isso server apenas para eu poder pesquisar dentro desta String
    if(strstr('.jpg;.jpeg;.gif;.png;.svg', $extensao))
    {
        // Cria um nome único para esta imagem
        // Evita que duplique as imagens no servidor.
        $novoNome = $nome . '.' . $extensao;
    
        // Concatena a pasta com o nome
        $destino = 'fotos/' .$nome;
    
        // tenta mover o arquivo para o destino
        if( @move_uploaded_file( $arquivo_tmp, $destino  ))
        {
            echo "Arquivo salvo com sucesso em : &lt;strong&gt;" . $destino . "&lt;/strong&gt;&lt;br /&gt;";
            //echo "&lt;img src=\"" . $destino . "\" /&gt;";
        }
        else
            echo "Erro ao salvar o arquivo. Aparentemente você não tem permissão de escrita.&lt;br /&gt;";
    }
    else
        echo "Você poderá enviar apenas imagens ";
    

    }
    else
    {
    echo "Você não enviou nenhum arquivo!";
    }
    $urltxt = $destino;
    //gravar formulario no banco de dados
    $stmt = $pdo->prepare('INSERT INTO imagens (nome, urlimg, autor, datadepublicacao, categoria) VALUES (:nome, :urlimg, :autor, :datadepublicacao, :categoria)');

    $stmt->bindParam(':nome', $nome,PDO::PARAM_STR);
    //$cadastro->bindParam(':nome', $nome, PDO::PARAM_STR);
    $stmt->bindParam(':urlimg',$urltxt, PDO::PARAM_STR);
    $stmt->bindParam(':autor',$autor,PDO::PARAM_STR);
    $stmt->bindParam(':datadepublicacao',$data,PDO::PARAM_STR);
    $stmt->bindParam(':categoria',$categoria,PDO::PARAM_STR);
    $stmt->execute();
    ?>
    </body>
    </html>


  • QA Engineer

    This error can be caused because of some settings on your server! In this case it is necessary to modify these values!

    If it is a localhost server, search for the "php.ini" file and look for the following lines:

    memory_limit=128M 
    upload_max_filesize=2M
    post_max_size=8M
    max_execution_time=30
    max_input_time=60
    

    memory_limit Defines the maximum amount of memory in bytes that a script is allowed to allocate.

    upload_max_filesize The maximum size of a file sent. (which is your case)

    post_max_size Configures the maximum size of the posted data.

    max_execution_time This configures the maximum time in seconds that a script is allowed to run before it is finished.

    max_input_time Configures maximum time, in seconds, that a script is allowed to play input data, such as GET and POST.

    It is worth mentioning memory_limit must be greater than post_max_size

    Edit the data as needed!

    http://php.net/manual/pt_BR/




Suggested Topics

  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2
  • 2