Como faço para excluir uma imagem que colokei no site por um sistema de upload?
Entao galera, to fazendo um sisteminha de upload e postagem de imagens em um site, funciona da seguinte maneira:
O Usuario faz o upload da imagem e coloca uma legenda, quando ele clica em enviar a imagem aparece na tela com a legenda já. Isso já está pronto. agora preciso é de uma maneira de apagar esta imagem.
Vou postar o codigo aqui !
upload.php // Este arquivo faz o upload e posta as imagens e as legendas no arquivo legendas.php
<?php
if(isset($_FILES["arquivo"])){
$arquivo = $_FILES["arquivo"];
$pasta_dir = "upload/";//diretorio dos arquivos
//se não existir a pasta ele cria uma
if(!file_exists($pasta_dir)){
mkdir($pasta_dir);
}
$arquivo_nome = $pasta_dir . $arquivo["name"];
// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $arquivo_nome);
}
$legenda = $_POST["legenda"];
$msg = "<div style='height:140px; margin-top:10px; float:left; margin-right:20px;'>";
$msg .= "<tr><td bgcolor='#d9e6f7'><div style='float:left'><img src='$arquivo_nome' width='100px' height='100px'></div></td></tr>";
$msg .= "<table height='50' width='120' align='center'><tr><td bgcolor='#d9e6f7'><div><font color='#000000'>Legenda: $legenda</font></div></td></tr>";
$msg .= "<tr><td bgcolor='#d9e6f7'><div><font color='#000000'>Nome do arquivo $arquivo_nome</font></div></td></tr>";
$msg .= "<tr><td><input type='button' name='excluir' id='excluir' value='excluir'></td></tr>";
$msg .= "</table>";
$msg .= "</div>";
$ponteiro = fopen ("legendas.php", "a");
fwrite($ponteiro, "$msg\n\n\n");
fclose ($ponteiro);
include "legendas.php";
header("location:index.php");
?>
Este arquivo funciona perfeitamente. ele posta as imagens na pagina. Porem agora quero apaga-las. Como podem ver ja inclui 1 button de excluir mas ainda n coloquei o codigo
obrigado !
O Usuario faz o upload da imagem e coloca uma legenda, quando ele clica em enviar a imagem aparece na tela com a legenda já. Isso já está pronto. agora preciso é de uma maneira de apagar esta imagem.
Vou postar o codigo aqui !
upload.php // Este arquivo faz o upload e posta as imagens e as legendas no arquivo legendas.php
<?php
if(isset($_FILES["arquivo"])){
$arquivo = $_FILES["arquivo"];
$pasta_dir = "upload/";//diretorio dos arquivos
//se não existir a pasta ele cria uma
if(!file_exists($pasta_dir)){
mkdir($pasta_dir);
}
$arquivo_nome = $pasta_dir . $arquivo["name"];
// Faz o upload da imagem
move_uploaded_file($arquivo["tmp_name"], $arquivo_nome);
}
$legenda = $_POST["legenda"];
$msg = "<div style='height:140px; margin-top:10px; float:left; margin-right:20px;'>";
$msg .= "<tr><td bgcolor='#d9e6f7'><div style='float:left'><img src='$arquivo_nome' width='100px' height='100px'></div></td></tr>";
$msg .= "<table height='50' width='120' align='center'><tr><td bgcolor='#d9e6f7'><div><font color='#000000'>Legenda: $legenda</font></div></td></tr>";
$msg .= "<tr><td bgcolor='#d9e6f7'><div><font color='#000000'>Nome do arquivo $arquivo_nome</font></div></td></tr>";
$msg .= "<tr><td><input type='button' name='excluir' id='excluir' value='excluir'></td></tr>";
$msg .= "</table>";
$msg .= "</div>";
$ponteiro = fopen ("legendas.php", "a");
fwrite($ponteiro, "$msg\n\n\n");
fclose ($ponteiro);
include "legendas.php";
header("location:index.php");
?>
Este arquivo funciona perfeitamente. ele posta as imagens na pagina. Porem agora quero apaga-las. Como podem ver ja inclui 1 button de excluir mas ainda n coloquei o codigo
obrigado !
comentários (0)
suspender
Lista de Respostas:
26/07/2010 3:52pm
(~14 anos atrás)
(~14 anos atrás)
amigo,
Para apagar, vc pode usar a função unlink:
http://br.php.net/manual/pt_BR/function.unlink.php
ai mostra o caminho da imagem, na pasta onde salvou e ele apaga.
Espero ter ajudado
Para apagar, vc pode usar a função unlink:
http://br.php.net/manual/pt_BR/function.unlink.php
ai mostra o caminho da imagem, na pasta onde salvou e ele apaga.
Espero ter ajudado
26/07/2010 10:09pm
(~14 anos atrás)
(~14 anos atrás)
Hugo, você está escrevendo em um arquivo PHP dinamicamente e isso não é legal (pode ser perigoso com acesso concorrente).
Pelo que entendi, cada vez que envia um arquivo, você acrescenta algo no final do arquivo PHP. Mas e na hora de apagar o arquivo? Você vai apagar um pedaço do arquivo PHP também? Isso vai complicar ainda mais o que já não está legal.
Sugiro que controle quais arquivos foram transferidos através de um BD ou consultando o diretório de arquivos dinamicamente (veja funções como scandir, opendir, readdir, closedir, por exemplo).
Para a mesma página funcionar para envio e exclusão de arquivo, você precisaria que ele tivesse uma estrutura mais ou menos assim:
Na função "tratar_eventos" você verifica o que o usuário solicitou (enviou foto ou solicitou exclusão) e realiza a operação desejada.
Na função "imprimir_fotos" você só lista as fotos que estão no diretório e monta um formulário para exclusão.
Na função "imprimir_form_upload" você cria um formulário de upload.
Para excluir o arquivo, é só usar a função unlink que o Matheus disse. Mas tome cuidado. Quando receber o pedido do arquivo a ser excluído, use a função basename para evitar que o usuário informe a exclusão de arquivos indevidamente (usando caminho relativo com "..").
Exemplo:
Pelo que entendi, cada vez que envia um arquivo, você acrescenta algo no final do arquivo PHP. Mas e na hora de apagar o arquivo? Você vai apagar um pedaço do arquivo PHP também? Isso vai complicar ainda mais o que já não está legal.
Sugiro que controle quais arquivos foram transferidos através de um BD ou consultando o diretório de arquivos dinamicamente (veja funções como scandir, opendir, readdir, closedir, por exemplo).
Para a mesma página funcionar para envio e exclusão de arquivo, você precisaria que ele tivesse uma estrutura mais ou menos assim:
tratar_eventos(); imprimir_fotos(); imprimir_form_upload();
Na função "tratar_eventos" você verifica o que o usuário solicitou (enviou foto ou solicitou exclusão) e realiza a operação desejada.
Na função "imprimir_fotos" você só lista as fotos que estão no diretório e monta um formulário para exclusão.
Na função "imprimir_form_upload" você cria um formulário de upload.
Para excluir o arquivo, é só usar a função unlink que o Matheus disse. Mas tome cuidado. Quando receber o pedido do arquivo a ser excluído, use a função basename para evitar que o usuário informe a exclusão de arquivos indevidamente (usando caminho relativo com "..").
Exemplo:
$arquivo = basename($_POST['arquivo']); // arquivo a ser excluido if (is_file($diretorio_upload . '/' . $arquivo)) { unlink($diretorio_upload . '/' . $arquivo); }