0

Como faço para excluir uma imagem que colokei no site por um sistema de upload?

criado por Hugo Victor Dias Teodoro em 24/07/2010 4:56pm
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 !

Lista de Respostas:

0
26/07/2010 3:52pm
(~13 anos atrás)
Matheus Ricelly respondeu:
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

0
26/07/2010 10:09pm
(~13 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:

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);
}

Nova Resposta:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)