Удалить изображения из двух каталогов

0

У меня есть сценарий, который загружает изображения в базе данных и в двух каталогах: uploads/original и каталог для предварительного просмотра: uploads/thumbs

Мне нужно создать небольшую панель для удаления вставленных изображений, я уже создал код для удаления из базы данных, но я не могу удалить их из двух каталогов.

Я знаю, что мне нужно использовать unlink, но я не эксперт, я не знаю, где разместить код и т.д. Я прошу о помощи вам.

Это файл, который я delete.php структурирован до сих пор:

    <?php 
$con = mysql_connect("localhost","*******","******"); 
if (!$con) 
{ 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("**********************", $con); 

if($_POST) 
{ 
    $ids = isset($_POST['id']) ? $_POST['id'] : array(); 
    elimina_record($ids); 
} 
elseif(isset($_GET['id'])) 
{ 
    elimina_record(array($_GET['id'])); 
} 
else 
    mostra_lista(); 

function mostra_lista() 
{ 
    // mostro un eventuale messaggio 
    if(isset($_GET['msg'])) 
        echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />'; 

    // preparo la query 
    $query = "SELECT id,name,filename FROM image"; 

    // invio la query 
    $result = mysql_query($query); 

    // controllo l'esito 
    if (!$result) { 
        die("Errore nella query $query: " . mysql_error()); 
    } 

    echo ' 
    <form name="form1" method="post" action=""> 
    <table border="1"> 
        <tr> 
            <th>&nbsp;</th> 
            <th>ID</th> 
            <th>&nbsp;</th> 
        </tr>'; 

    while ($row = mysql_fetch_assoc($result)) 
    { 
        $name = htmlentities($row['name']); 
        $id = htmlentities($row['id']); 
        $filename = htmlentities($row['filename']); 



        // preparo il link per la modifica dei dati del record 
        $link = $_SERVER['PHP_SELF'].'?id=' . $row['id']; 

        echo "<tr> 
                <td><input name=\"id[]\" type=\"checkbox\" value=\"$row[id]\" /></td> 
                <td>$id</td> 
                <td><a href=\"$link\">delete</a></td> 
            </tr>"; 
    } 

    echo '</table> 
        <br /> 
        <input type="submit" name="Submit" value="Elimina record selezionati" /> 
        </form>'; 

    // libero la memoria di PHP occupata dai record estratti con la SELECT 
    mysql_free_result($result); 

    // chiudo la connessione a MySQL 
    mysql_close(); 
} 

function elimina_record($ids) 
{ 
    // verifico che almeno un id sia stato selezionato 
    if(count($ids) < 1) 
    { 
        $messaggio = urlencode("Nessun record selezionato!"); 
        header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio); 
        exit; 
    } 

    // per precauzione converto gli ID in interi 
    $ids = array_map('intval',$ids); 

    // creo una lista di ID per la query 
    $ids = implode(',',$ids); 

    // preparo la query 
    $query = "DELETE FROM image WHERE id IN ($ids)"; 

    // invio la query 
    $result = mysql_query($query); 

    // controllo l'esito 
    if (!$result) { 
        die("Errore nella query $query: " . mysql_error()); 
    } 

    // conto il numero di record cancellati 
    $num_record = mysql_affected_rows(); 

    // chiudo la connessione a MySQL 
    mysql_close(); 

    $messaggio = urlencode("Numero record cancellati: $num_record"); 
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio); 
} 
?>

Хотя, может быть полезно, даже вставьте файл в файлы upload.php:

    session_start();
$_SESSION['id']="1";
$id=$_SESSION['id'];
include 'config.php';  //assume you have connected to database already.
$folder = 'uploads/';
$name = date('YmdHis');
$filename = md5($_SERVER['REMOTE_ADDR'].rand()).'.jpg';
$original = $folder.$filename;

// The JPEG snapshot is sent as raw input:
$input = file_get_contents('php://input');

if(md5($input) == '7d4df9cc423720b7f1f3d672b89362be'){
    // Blank image. We don't need this one.
    exit;
}

$result = file_put_contents($original, $input);
if (!$result) {
    echo '{
        "error"        : 1,
        "message"    : "Failed save the image. Make sure you chmod the uploads folder and its subfolders to 777."
    }';
    exit;
}

$info = getimagesize($original);
if($info['mime'] != 'image/jpeg'){
    unlink($original);
    exit;
}

// Moving the temporary file to the originals folder:
rename($original,'uploads/original/'.$filename);
$original = 'uploads/original/'.$filename;

// Using the GD library to resize 
// the image into a thumbnail:

$origImage    = imagecreatefromjpeg($original);
$newImage    = imagecreatetruecolor(154,110);
imagecopyresampled($newImage,$origImage,0,0,0,0,154,110,520,370); 

imagejpeg($newImage,'uploads/thumbs/'.$filename);

echo '{"status":1,"message":"Success!","filename":"'.$filename.'"}';


    $sql="INSERT INTO image VALUES ('','$name','$filename')";
    $result=mysqli_query($con,$sql);
    $value=mysqli_insert_id($con);
    $_SESSION["myvalue"]=$value;  
  • 1
    По крайней мере, вы могли бы перевести комментарии. В любом случае, лучшее место для вызова unlink - сразу после того, как вы успешно удалили запись из базы данных.
  • 0
    Привет, извини, ты прав. Тем не менее, вы могли бы дать мне пример, если вы можете, код "unlink" для реализации? Пример может пойти так хорошо?
Показать ещё 3 комментария
Теги:
directory
image
delete-file

2 ответа

0

Проверь это:

$dir1 = '/upload/original/';
$dir2 = '/upload/thumbs/';
$image = 'abc.jpg';
if(file_exists($dir1.$image))
    unlink($dir1.$image);
if(file_exists($dir2.$image))
    unlink($dir2.$image);
0
$cart_1="/uploads/original/"; 
    $cart_2="/uploads/thumbs/"; 
    foreach($files as $file){ 
        $f_1=$cart_1.$file; 
        $f_2=$cart_2.$file; 
        unlink($f_1); 
        unlink($f_2); 
    }
  • 0
    Вы можете принять свой ответ, нажав на галочку ....

Ещё вопросы

Сообщество Overcoder
Наверх
Меню