post #4113
Código PHP para Fazer Backup e Download de Arquivos Pelo Navegador
Publicado em: 10/01/2024 / Atualizado em: 10/01/2024
<?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:
Link Direto
Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link direto abaixo. Basta copiar.
bruno.art.br/?p=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.