Upload images larger than 2mb

Asked

Viewed 800 times

2

I have a simple system that uploads the image to a folder and writes the name and url to the database. But when I select an image larger than 2mb of the error in the target vaiavel that is equal to $destination = "folder/". filename

<!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: <strong>" . $_FILES['arquivo']['name'] . "</strong><br />";
    echo "Este arquivo é do tipo: <strong>" . $_FILES['arquivo']['type'] . "</strong><br />";
    echo "Temporáriamente foi salvo em: <strong>" . $_FILES['arquivo']['tmp_name'] . "</strong><br />";
    echo "Seu tamanho é: <strong>" . $_FILES['arquivo']['size'] . "</strong> Bytes<br /><br />";

    $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 : <strong>" . $destino . "</strong><br />";
            //echo "<img src=\"" . $destino . "\" />";
        }
        else
            echo "Erro ao salvar o arquivo. Aparentemente você não tem permissão de escrita.<br />";
    }
    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>

1 answer

1

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

If you are a localhost server, look 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 Sets the maximum amount of memory in bytes a script is allowed to allocate.

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

post_max_size Sets the maximum size of the posted data.

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

max_input_time Sets the maximum time, in seconds, a script is allowed to spend interpreting input data such as GET and POST.

It is noteworthy that memory_limit must be bigger than post_max_size

Edit data as needed!

Source

Browser other questions tagged

You are not signed in. Login or sign up in order to post.