post

Código PHP para Fazer Backup e Download de Arquivos Pelo Navegador

Publicado em: 10/01/2024 / Atualizado em: 10/01/2024

Categorias: BlogPHP
<?php
function zipData($source, $destination) {
    if (!extension_loaded('zip') || !file_exists($source)) {
        die('A extensão Zip não está habilitada ou o diretório não existe.');
    }

    $zip = new ZipArchive();
    if (!$zip->open($destination, ZipArchive::CREATE)) {
        die('Não foi possível criar o arquivo ZIP.');
    }

    $source = realpath($source);

    if (is_dir($source)) {
        $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST);

        foreach ($files as $file) {
            $file = realpath($file);

            if (is_dir($file)) {
                $zip->addEmptyDir(str_replace($source . '/', '', $file . '/'));
            } elseif (is_file($file)) {
                $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file));
            }
        }
    } elseif (is_file($source)) {
        $zip->addFromString(basename($source), file_get_contents($source));
    }

    $zip->close();
}

// Obtém o diretório atual do script
$source = __DIR__;
$destination = 'backup.zip';
zipData($source, $destination);


if (isset($_GET['save']) && $_GET['save'] === 'true') {
    // Executar o código que salva no servidor
    echo 'Compactação concluída. Arquivo ZIP salvo em: ' . $destination;
} elseif (isset($_GET['download']) && $_GET['download'] === 'true') {
    // Executar o código que faz o download
    header('Content-Type: application/zip');
    header('Content-disposition: attachment; filename=' . $destination);
    header('Content-Length: ' . filesize($destination));
    readfile($destination);
} else {
    // Caso nenhum parâmetro seja fornecido, exibir uma mensagem de erro
    echo 'Parâmetro inválido. Use "?save=true" apenas para salvar no servidor ou "?download=true" para salvar e fazer o download pelo navegador.';
}
?>

Publicações recomendadas:


Inscreva-se em Nossa News:

Seja notificando sempre que tiver conteúdo novo disponível no meu canal do Youtube ou artigo no meu Blog.

Bruno Devs News


Link Curto para Compartilhamento

Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.

bruno.art.br/pb/4113

ID de Referência: 4113

Sugira uma publicação

Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.

Clique aqui e entre em contato


Comentários