Customize Consent Preferences

We use cookies to help you navigate efficiently and perform certain functions. You will find detailed information about all cookies under each consent category below.

The cookies that are categorized as "Necessary" are stored on your browser as they are essential for enabling the basic functionalities of the site. ... 

Always Active

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

No cookies to display.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

No cookies to display.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

No cookies to display.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

No cookies to display.

Pular para o conteúdo

upload e download PHP e MySQL

Primeiramente Olá, entusiastas da programação! Assim Hoje, tenho uma novidade emocionante para compartilhar com vocês. De fato No canal Café Codificado, lançamos um novo vídeo mostrando como criar um sistema de upload e download usando PHP e MySQL. Por isso Este artigo acompanha o vídeo, explicando em detalhes como o script funciona e as vantagens de utilizá-lo. Vamos explorar juntos!

Introdução

Sobretudo O sistema de upload e download é uma funcionalidade essencial em muitas aplicações web. Ele permite que usuários carreguem arquivos para o servidor e façam o download desses arquivos posteriormente. O script que desenvolvemos é open source, o que significa que você pode usá-lo e modificá-lo conforme suas necessidades.

O Vídeo Tutorial

Ademais No vídeo, disponível em nosso canal Café Codificado, você encontrará um passo a passo detalhado sobre como implementar este sistema. A seguir, apresento um resumo dos principais pontos abordados no vídeo.

Funcionalidades do Script

Nosso script de upload e download possui as seguintes funcionalidades:

  1. Upload de Arquivos:
    • Os usuários podem fazer o upload de arquivos de diferentes tipos (imagens, documentos, etc.).
    • Limitação de tamanho de arquivo para evitar sobrecarga do servidor.
    • Verificação de tipos de arquivo permitidos para aumentar a segurança.
  2. Download de Arquivos:
    • Listagem de arquivos disponíveis para download.
    • Links de download seguros para prevenir acesso não autorizado.
  3. Gestão de Arquivos:
    • Interface administrativa para visualizar, excluir e gerenciar arquivos.
    • Registro de logs para monitoramento de atividades.

Passo a Passo para Implementação

1. Configuração do Banco de Dados

Crie um banco de dados MySQL para armazenar informações sobre os arquivos. A tabela deve conter colunas para ID, nome do arquivo, tipo de arquivo, tamanho e caminho do arquivo.

sqlCopiar códigoCREATE DATABASE file_management;

USE file_management;

CREATE TABLE files (
    id INT AUTO_INCREMENT PRIMARY KEY,
    file_name VARCHAR(255) NOT NULL,
    file_type VARCHAR(50),
    file_size INT,
    file_path VARCHAR(255) NOT NULL,
    upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. Script de Upload em PHP

O código abaixo mostra como criar um formulário HTML para upload e o script PHP que processa o upload.

upload.html:

htmlCopiar código<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Upload de Arquivo</title>
</head>
<body>
    <h2>Upload de Arquivo</h2>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        Selecione o arquivo para upload:
        <input type="file" name="fileToUpload" id="fileToUpload">
        <input type="submit" value="Upload" name="submit">
    </form>
</body>
</html>

upload.php:

phpCopiar código<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$fileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

// Verifica se o arquivo é um tipo permitido
$allowed_types = array("jpg", "png", "pdf", "doc", "docx");
if(!in_array($fileType, $allowed_types)) {
    echo "Desculpe, apenas arquivos JPG, PNG, PDF, DOC e DOCX são permitidos.";
    $uploadOk = 0;
}

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

if ($uploadOk == 0) {
    echo "Desculpe, seu arquivo não foi carregado.";
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "O arquivo ". basename($_FILES["fileToUpload"]["name"]). " foi carregado.";

        // Conecta ao banco de dados
        $conn = new mysqli("localhost", "root", "", "file_management");

        // Verifica a conexão
        if ($conn->connect_error) {
            die("Conexão falhou: " . $conn->connect_error);
        }

        // Insere informações do arquivo no banco de dados
        $stmt = $conn->prepare("INSERT INTO files (file_name, file_type, file_size, file_path) VALUES (?, ?, ?, ?)");
        $stmt->bind_param("ssis", $fileName, $fileType, $fileSize, $filePath);

        $fileName = basename($_FILES["fileToUpload"]["name"]);
        $fileSize = $_FILES["fileToUpload"]["size"];
        $filePath = $target_file;

        if ($stmt->execute()) {
            echo "Informações do arquivo salvas no banco de dados.";
        } else {
            echo "Erro ao salvar informações do arquivo: " . $stmt->error;
        }

        $stmt->close();
        $conn->close();
    } else {
        echo "Desculpe, houve um erro ao carregar seu arquivo.";
    }
}
?>

3. Script de Download em PHP

O código a seguir mostra como listar arquivos disponíveis para download e o script PHP que processa o download.

download.php:

phpCopiar código<?php
$conn = new mysqli("localhost", "root", "", "file_management");

if ($conn->connect_error) {
    die("Conexão falhou: " . $conn->connect_error);
}

$sql = "SELECT id, file_name, file_path FROM files";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "<a href='download_file.php?id=" . $row["id"] . "'>" . $row["file_name"] . "</a><br>";
    }
} else {
    echo "Nenhum arquivo encontrado.";
}

$conn->close();
?>

download_file.php:

phpCopiar código<?php
if (isset($_GET['id'])) {
    $id = intval($_GET['id']);

    $conn = new mysqli("localhost", "root", "", "file_management");

    if ($conn->connect_error) {
        die("Conexão falhou: " . $conn->connect_error);
    }

    $stmt = $conn->prepare("SELECT file_path FROM files WHERE id = ?");
    $stmt->bind_param("i", $id);

    $stmt->execute();
    $stmt->bind_result($filePath);
    $stmt->fetch();
    $stmt->close();
    $conn->close();

    if (file_exists($filePath)) {
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="' . basename($filePath) . '"');
        header('Content-Length: ' . filesize($filePath));
        readfile($filePath);
        exit;
    } else {
        echo "Arquivo não encontrado.";
    }
} else {
    echo "ID do arquivo não especificado.";
}
?>

Vantagens do Script Open Source

  1. Flexibilidade: O código pode ser personalizado para atender às suas necessidades específicas.
  2. Segurança: Verificações de tipo e tamanho de arquivo ajudam a proteger o servidor.
  3. Facilidade de Uso: Interface simples para usuários finais fazerem upload e download de arquivos.
  4. Gratuito: Sendo open source, você pode usar e distribuir o script sem custos.

Conclusão

Em resumo Este sistema de upload e download em PHP e MySQL é uma solução robusta e flexível para muitas aplicações web. Por fim Assista ao nosso vídeo no Café Codificado para ver o tutorial completo e começar a usar o script hoje mesmo. Se tiver dúvidas ou sugestões, deixe seu comentário no vídeo ou neste artigo. Boa codificação!