Exemplo de upload de arquivos com aplicativo PHP

De Wiki Integrator do Brasil
Ir para: navegação, pesquisa


Nodepromo-2021.jpg



Índice

Antes de começar

As orientações contidas neste tutorial exigem conhecimento do desenvolvedor responsável, no qual é fornecido como uma referencia para ser utilizado e adaptado conforme necessidade. Ressaltamos que o tutorial foi testado e funcional 100%.

O suporte da Integrator é totalmente isento as informações contidas no tutorial, no qual envolve programação e conhecimento de um desenvolvedor especializado.


Sobre o tutorial

O exemplo disponibilizado é de um simples aplicativo PHP, no qual realiza upload de imagens para um diretorio dentro do usuario cPanel,com intuito de mostrar o funcionamento de upload através de aplicativos PHP nos servidores da Integrator.

Para baixar o exemplo completo, Clique Aqui.


O arquivo index.php

O arquivo index.php possui o código apresentado na listagem abaixo, onde é gerado um token e botões com função de upload e de seleção de imagem.


<?php
session_start();

// Gerar CSRF token
$token = bin2hex(random_bytes(32));
$_SESSION['csrf_token'] = $token;
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Upload de Imagens com CSRF Protection</title>
</head>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Selecione uma imagem para fazer o upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="hidden" name="csrf_token" value="<?php echo $token; ?>">
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>


O arquivo upload.php

O arquivo upload.php possui o código apresentado na listagem abaixo, no qual define o diretório onde sera salvo as imagens e realiza as validações necessarias no arquivo para realizar o upload.

Toda explicação detalhada do arquivo upload.php, esta descrita no exemplo completo disponível para baixar, citado mais acima. Ao abrir o arquivo upload.php, comentamos e explicamos cada linha apresentada do código.


<?php
session_start();

// Verificar CSRF token
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die('Token CSRF inválido ou ausente.');
}
// Pasta que salva as imagens
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

// Verificar se é uma imagem
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if (!$check) {
    echo "O arquivo não é uma imagem.";
    $uploadOk = 0;
}

// Verificar se o arquivo já existe
if (file_exists($target_file)) {
    echo "Desculpe, o arquivo já existe.";
    $uploadOk = 0;
}

// Verificar o tamanho do arquivo
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Desculpe, seu arquivo é muito grande.";
    $uploadOk = 0;
}

// Verificar formato do arquivo
if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif") {
    echo "Desculpe, apenas arquivos JPG, JPEG, PNG & GIF são permitidos.";
    $uploadOk = 0;
}

// Tentar fazer o upload do arquivo
if ($uploadOk) {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "O arquivo " . basename($_FILES["fileToUpload"]["name"]) . " foi enviado.";
    } else {
        echo "Desculpe, ocorreu um erro ao enviar seu arquivo.";
    }
}
?>


Exemplo testado e ilustrado

1. Na imagem abaixo, temos uma simples tela inicial do aplicativo, onde selecionamos o arquivo desejado e confirmamos o upload:

Alt text


2. A seguir, realizamos a confirmação do upload realizado em nosso teste, no qual comprovamos o funcionamento 100% da imagem no servidor e com as permissões padrões corretas no arquivo.

Alt text


PS: Lembramos que o endereço de acesso utilizado nos testes são temporarios. Para seus testes, utilize um dominio e/ou subdomínio criado no painel cPanel no qual possa ter acesso no momento.