Mudanças entre as edições de "Exemplo de upload de arquivos com aplicativo PHP"
| Linha 1: | Linha 1: | ||
| − | + | [[File:Wiki-banner-icp-2025.jpg|center| 700px||border|link=https://www.integrator.com.br/plano-hospedagem-promocionais|Planos promocionais|]] | |
| − | + | ||
| − | [[File: | + | |
| − | + | ||
| − | + | ||
| − | + | ||
== Antes de começar == | == Antes de começar == | ||
Edição das 14h29min de 17 de julho de 2025
Í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:
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.
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.