opensource

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!