Atualizado em 08 de Abril de 2013

Apagar Todos Arquivos de uma Pasta PHP

Olá pessoal,

Em alguns momentos precisamos esvaziar uma determinada pasta seja para poder excluir a mesma ou para qualquer outra função que desejarmos, daí surge a duvida: Como apagar todos os arquivos de uma pasta?. Com PHP esta função e bem simples.

Primeiro vamos ter que listar todos os arquivos que tem dentro da pasta e ir apagado ao mesmo tempo até que a pasta fique completamente vazia.

Vamos ao nosso exemplo.

<?php
$pasta = "pasta_teste/";

if(is_dir($pasta))
 {
  $diretorio = dir($pasta);

  while($arquivo = $diretorio->read())
  {
   if(($arquivo != '.') && ($arquivo != '..'))
   {
    unlink($pasta.$arquivo);
    echo 'Arquivo '.$arquivo.' foi apagado com sucesso. <br />';
   }
  }

  $diretorio->close();
 }
else
 {
  echo 'A pasta não existe.';
 }
?>


E isso aí pessoal, até a próxima.


"Esta dica te ajudou de alguma forma?" Então ajude outras pessoas compartilhando este conteúdo com seus amigos! =)

Tags:  Comandos PHP | PHP

Comentários

Sua foto do perfil

Murilo Cabral

Olá Mauricio, sou iniciante em PHP, e estou tentando excluir simultaneamente uma determinada imagem que esta no campo "logo" de uma tabela que tem vários outros campos, e da pasta onde esta armazenada que se chama "upload", porém somente consigo excluir toda linha da tabela referente ao campo "logo", e mesmo assim não exclui da pasta "upload".

O objetivo é para que quando o usuário descida alterar a imagem, não fique a imagem antiga sobrecarregando o servidor, já que ela não esta sendo mais usada.

Estou publicando abaixo o código que estou usando, para que vc. possa dar uma analisada e se puder também me dizer onde estou errando para que eu possa dar continuidade ao meu projeto.

Desde já meus agradecimentos pela sua atenção, e no aguardo de sua resposta.

19 de Setembro de 2015 - 12:10

Sua foto do perfil

Mauricio Programador

Olá Murilo,

Pelo que entendi você quer alterar a imagem, então você não precisa deletar o registro do seu banco de dados.

Vou lhe falar os passos que eu faço para que você possa fazer igual.

Quando o usuário escolher uma nova imagem e depois clicar em alterar o sistema vai fazer o seguinte:

1. Busca o nome a imagem que esta salvo no banco de dados.
2. Apaga esta imagem com o comando unlink
3. Faz upload da nova imagem
4. Da uma UPDATE no registro que vai salvar esta nova imagem, colocando no campo da imagem o nome da nova imagem.

Espero que este passo a passo lhe ajude.

Abraço.

24 de Setembro de 2015 - 13:42

Sua foto do perfil

Eduardo B

Vlw, ajudou bastante.

07 de Setembro de 2015 - 13:38

Sua foto do perfil

Marcio

Boa tarde Mauricio! Em primeiro lugar agradeço você compartilhar seu conhecimento por nos, Seu código é bom e funciona bem, eu so gostaria de fazer uma pequena adaptação para meu projeto, poderia me ajudar? Eu estou fazendo um site de imóveis e quando cadastro um imóvel php cria uma pasta(grava o nome no banco de dados ) e ja coloca as imagem dentro desta pasta. ate ai tudo certo,
meu é assim '../images/imoveis/pasta_criada/foto';
quando eu vou deleta um arquivo ele deleta, o problema é

30 de Agosto de 2015 - 18:06

Sua foto do perfil

Mauricio Programador

Olá Marcio,

Acho que a sua mensagem veio pela metade, posta o complemento para que eu possa lhe ajudar.

Abraço.

04 de Setembro de 2015 - 11:04

Sua foto do perfil

Ciro

Valeu!!! Ajudou sim!!!

12 de Março de 2015 - 21:52

Sua foto do perfil

Rangel

Olá,

Criei uma função de upload para uma galeria. E pra cada imagem tem checkbox e isso está me dando um trabalho na hora de deletar as imagens da pasta. Do BD tudo bem mas da pasta não deleta por nada...

código do checkbox-------------------------------------------

<?php
if (isset($_POST['deletar'])){
$check = @$_POST['apagar'];
foreach($check as $imgId){
$delcheck = mysql_query("DELETE FROM galeria WHERE imgId='$imgId'");
if ($delcheck >= '1'){
echo '<script type="text/javascript">
alert("Deletado com sucesso!");
window.location.href = "listar-galeria.php";
</script>';
}else{
echo '<script type="text/javascript">
alert("Erro, tente novamente!");
window.location.href = "listar-galeria.php";
</script>';
}
}
}
?>
---------------------------------------------------------------
Não consigo de forma alguma deletar da pasta...

22 de Dezembro de 2014 - 10:32

Sua foto do perfil

Mauricio Programador

Olá Rangel,

Pelo que vi do seu código basta colocar o comando que delata o arquivo, exe.:

...
foreach($check as $imgId) {
$delcheck = mysql_query("DELETE FROM galeria WHERE imgId='$imgId'");

unlink('PASTA/'.$delcheck['CAMPO_ARQUIVO']);

...

Espero que ajude.

Abraço.

23 de Dezembro de 2014 - 09:13

Sua foto do perfil

Douglas Dreer

Há uma maneira mais simples de realizar este procedimento.
<?php
//Excluir todos os arquivos .jpg
try{
//Caminho real da pasta e extensão desejada
$path = "/projeto/temporario/imagens/*.jpg";
array_map( "unlink", glob( $path ) );
} catch (Exception $ex) {
die("Erro : {$ex -> getMessage()}");
}
?>

24 de Novembro de 2014 - 09:33

Sua foto do perfil

Matheus Morais

Olá, gostaria de saber se tem como eu listar os arquivos e selecionar o que quero apagar.

13 de Novembro de 2014 - 17:43

Sua foto do perfil

Mauricio Programador

Olá Matheus,

Tem como sim, para lista os arquivos, veja o link:

Listar Arquivos Diretório PHP

Para selecionar os arquivos que deseja excluir crie um formulário com checkbox ao lado dos arquivos listados, com um submit que envie o nome destes arquivos para o PHP exclui-los.

Abraço.

14 de Novembro de 2014 - 08:48

Sua foto do perfil

Tiago

Top!!

13 de Outubro de 2014 - 21:33

Sua foto do perfil

Alexandre

Olá,
Eu não tenho conhecimentos aprofundados em PHP, mas gostaria de vos colocar uma questão.

Tenho uma tabela de artigos que está relacionada pelo id_artigo com id_imagens da tabela imagens que são colocadas em cada artigo.
Na tabela imagens alem do id_imagens tenho outro campo com o nome dos arquivos que foram postados em cada artigo (um arquivo por linha).

O meu problema é que cada vez que elimino um artigo as imagens permanecem no servidor e por vezes fico com mais de 10.000 imagens, e sem saber como as apagar sem ser manualmente.

Será que é possivel fazer um cron fie para apagar automaticamente as imagens quanto o status do artigo na tabela artigos = exluido ?

Obrigado pela ajuda.

06 de Junho de 2014 - 10:08

Sua foto do perfil

Mauricio Programador

Olá Alexandre,

Claro que e possível, você pode fazer o seguinte.

Na sua função que exclui o artigo, antes de excluir você faz uma pesquisa na tabela imagens, buscando por todos os registro com o id relacionado com o artigo que irá excluir.

Com o resultado você cria um while que irá apagar as imagens como no script acima.

Depois e so excluir o registro.

Espero ter ajudado.

Abraço.

07 de Junho de 2014 - 10:45

Sua foto do perfil

Bruno Rocha

Fala galera aqui funcionou legal, para quem quiser eu modifiquei o código usando o outro tutorial de deletar pastas aqui do blog. Segue abaixo o código que deleta todos os arquivos de uma determinada pasta e logo após deleta esta mesma pasta.

$pasta_fotos = "/fotoscliente";

if(is_dir($pasta_fotos))
{
$diretorio_fotos = dir($pasta_fotos);

while($arquivo_fotos = $diretorio_fotos->read())
{
if(($arquivo_fotos != '.') && ($arquivo_fotos != '..'))
{
unlink($pasta.$arquivo_fotos);
echo 'Arquivo '.$arquivo_fotos.' foi apagado com sucesso. <br />';
}
}

$diretorio_fotos->close();
}
if(rmdir($pasta_fotos))
{
echo 'Pasta deletada com sucesso.';
}
else
{
echo 'A pasta não pode ser deletada.';
}

15 de Maio de 2014 - 16:08

Sua foto do perfil

Mauricio Programador

E isso ai Bruno.

Grande abraço.

16 de Maio de 2014 - 14:18

Sua foto do perfil

Henrique Magri

Boa tarde, tem algum exemplo para excluir pasta e subpastas?

08 de Maio de 2014 - 17:25

Sua foto do perfil

Mauricio Programador

Olá Henrique,

Para apagar pasta olhe o link: Deletar Pasta com PHP

Abraço.

08 de Maio de 2014 - 17:33

Sua foto do perfil

Charles Corrêa

Prezado Mauricio

Como seria se eu quisesse excluir somente uma determinada extensão de arquivos desta pasta?

Digamos que eu queira somente excluir arquivos .pdf de digamos 20/03/2013 até 23/03/2014

25 de Março de 2014 - 15:31

Sua foto do perfil

Mauricio Programador

Olá Charles,

para fazer isso teríamos que modificar um pouco o código, ficaria assim:

$pasta = "./";
if(is_dir($pasta))
{
foreach(glob("$pasta*.pdf") as $arquivo)
{
unlink($pasta.$arquivo);
echo 'Arquivo '.$arquivo.' foi apagado com sucesso. <br />';
}
}
else
{
echo 'A pasta não existe.';
}

Abraço.

25 de Março de 2014 - 16:43

Sua foto do perfil

isaac

deu 'Parse error: syntax error, unexpected T_VARIABLE in /home/u407305312/public_html/hospedagem/pasta2.php on line 3'

13 de Dezembro de 2013 - 10:05

Sua foto do perfil

Mauricio Programador

Isaac,

posta teu código ai pra mim ver!!!

Abraço.

13 de Dezembro de 2013 - 10:41

Sua foto do perfil

Alisson

Maurício, essa função serviria para apagar pastas que tem subpastas em seu interior?

05 de Dezembro de 2013 - 12:49

Sua foto do perfil

Mauricio Programador

Olá Alisson,

não na verdade o comando mostrado neste post apenas apaga arquivos.

Para apagar pasta você vai ter que usar o comando Rmdir. Podes até usar o mesmo comando para listar o conteúdo da pasta porem terá que fazer uma verificação se é uma pasta ou arquivo, daí e só usar o comando apropriado.

Espero ter ajudado.

Abraço.

05 de Dezembro de 2013 - 14:12

Sua foto do perfil

Team

e seu eu quiser apagar a imagem puxando ela pelo id tem como ?

01 de Novembro de 2013 - 21:12

Sua foto do perfil

Mauricio Programador

Olá Team,

tem como sim. Basta fazer uma consulta a sua tabela buscando pelo id e pegar o nome do arquivo do registro, daí basta usar o comando unlink especificando o local do arquivo com o nome do mesmo retornado pela busca.

Tem um post aqui somente com o comando unlink se tiver dúvida.

Link

Qualquer dúvida post aí.

abraço.

01 de Novembro de 2013 - 22:29

Sua foto do perfil

Fagner

Valeu, era o que estava procurando.

06 de Outubro de 2013 - 21:51

Sua foto do perfil

Carlos Madeira

Funcionou perfeitamente. !!!

28 de Setembro de 2013 - 13:12

Sua foto do perfil

Breno Mol

Muito bom cara, Parabenss!

03 de Setembro de 2013 - 11:25

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER