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>