Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17736
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Download de fotos selecionadas no checkbox pelo visitante usando PHP

18-09-2016 16:27

Nesse post vou mostrar como criar um arquivo zip para download de fotos no site que foram selecionadas pelo usuário.

O usuário irá ver uma lista de fotos. Cada foto vai ter um checkbox sobre a foto. O usuário irá marcar selecionando as fotos que deseja baixar.
Após enviar as fotos selecionadas vai ser criado um arquivo zip com as fotos, e forçado o download das fotos.

Para o script funcionar você vai precisar do seguinte:

- Crie uma pasta a partir do diretório principal, e dê o nome de fotos
- Dentro dessa pasta você precisa criar 2 arquivos:

leia.txt = esse arquivo vai no zip junto com as fotos que o usuário escolheu
fotos.zip = esse arquivo é que vai ser usado para que o script jogue as fotos dentro
Para criar esse arquivo, clique com o botão direito dentro da pasta fotos/, escolha Novo arquivo, Arquivo ZIP e dê o nome desse arquivo de fotos.zip

Criado a pasta e os arquivos vamos a parte do processamento.

Vamos chamar o arquivo que vai terá as fotos para serem selecionadas de fotos.php e colocamos o seguinte:

<style> .foto{ width:200px; height:200px; display:inline-block } .checkbox{ position:relative; top:-180px; left:-200px; } </style> <form action="fotos.php" method="post"> <img src="foto1.jpg" class="foto" /><input type="checkbox" value="foto1.jpg" name="foto[]" class="checkbox" /> <img src="foto2.jpg" class="foto" /><input type="checkbox" value="foto2.jpg" name="foto[]" class="checkbox" /> <input type="submit" name="submit" /> </form> <?php // enviando os dados if(isset($_POST['submit'])) { // ZIP $zip = new ZipArchive; // pasta e arquivo zipado no servidor $arquivo = "fotos/fotos.zip"; if($zip->open($arquivo) === TRUE) { // ZIP foreach($_POST['foto'] AS $foto) { $zip->addFile($foto); } // ZIP $zip->close(); } else { echo "erro"; } // ZIP // enviando o usuário para o download header("Location:baixar.php"); } ?>

No script acima onde está o value do checkbox você seleciona o caminho até a foto. Como no meu caso a foto está na pasta principal do script é só colocar o nome mesmo.

Agora vou mostrar o código do baixar.php, que vai forçar o download das fotos selecionadas.

<?php // parte do download $dir = ""; // mesmo caminho definido em $arquivo no arquivo principal $arquivo = "fotos/fotos.zip"; $var = "application/force-download"; if(file_exists($dir.$arquivo)){ header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: $var"); header("Content-Disposition: attachment; filename=\"".basename($dir.$arquivo)."\";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($dir.$arquivo)); readfile($dir.$arquivo); $zip = new ZipArchive; $arquivo = $arquivo; if($zip->open($arquivo) === TRUE) { for ($i = 0; $i < $zip->numFiles; $i++) { $zip->deleteIndex($i); } // arquivo adicional que é colocado junto com as fotos $zip->addFile("leia.txt"); $zip->close(); } } else { echo "erro ao criar o arquivo de download"; } ?>

Os detalhes estão comentados no script. Qualquer dúvida só perguntar.
1
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado