簡體   English   中英

如何使用jQuery / Ajax / PHP刪除上傳的圖片?

[英]How to delete uploaded image using jQuery / Ajax / PHP?

我正在使用以下腳本上傳圖像。 這是鏈接: http : //filer.grandesign.md/

使用此腳本允許在上傳圖像后進行預覽。 像波紋管圖像一樣:

在此處輸入圖片說明

您可以看到,它還允許刪除圖像-請參見紅色存儲桶圖標

我現在在做什么:

當我上傳圖像時,我重命名了上傳的圖像並將其保存到數據庫。

代碼如下:

require_once('class.upload.php');
if(!isset($_FILES['files'])) {
    die();
}

$files = array();
foreach ($_FILES['files'] as $k => $l) {
   foreach ($l as $i => $v) {
       if (!array_key_exists($i, $files))
           $files[$i] = array();
       $files[$i][$k] = $v;
   }
}

foreach ($files as $file) {

    $handle = new upload($file);

    if ($handle->uploaded) {

        $handle->file_new_name_body     = 'mpic_list_'.uniqid('', true);
        $menu_list_image = $handle->file_new_name_body;

        $handle->image_resize          = true;
        $handle->image_ratio_crop      = true;
        $handle->image_x               = 360;
        $handle->image_y               = 240;   

        $handle->process('images/menu_images/');    

        $handle->file_new_name_body     = 'mpic_small_'.uniqid('', true);
        $menu_small_image = $handle->file_new_name_body;

        $handle->image_resize          = true;
        $handle->image_ratio_crop      = true;  
        $handle->image_x               = 100;
        $handle->image_y               = 65;

        $handle->process('images/menu_images/');

        $handle->file_new_name_body     = 'mpic_large_'.uniqid('', true);
        $menu_large_image = $handle->file_new_name_body;

        $handle->image_resize          = true;
        $handle->image_ratio_crop      = true;  
        $handle->image_x               = 700;
        $handle->image_y               = 470;

        $handle->process('images/menu_images/');

        if ($handle->processed) {           
            $all_images = $menu_list_image . $menu_small_image . $menu_large_image;
            $u_id = (int) $_SESSION['logged_user_id'];

            if(!isset($_SESSION['last_id'])) {
                // insert upload image section data...
                $insert_menu_details = mysqli_query($conn, "INSERT INTO products (p_id) VALUES ('')");
                $last_id = mysqli_insert_id($conn);
                $insert_upload_image = mysqli_query($conn, "INSERT INTO product_images VALUES ('', '$menu_large_image', '$menu_list_image', '$menu_small_image', '$last_id', '$u_id')");    
                $_SESSION['last_id'] = $last_id;
            } else {
                // update upload image section data
                $session_last_id = $_SESSION['last_id'];
                $update_upload_image = mysqli_query($conn, "INSERT INTO product_images VALUES ('', '$menu_large_image', '$menu_list_image', '$menu_small_image', '$session_last_id', '$u_id')");    
            }

            $handle->clean();
        } else {
            //echo 'error : ' . $handle->error;
            echo 'Error';
        }
    }   
}

我需要的 :

現在,我要刪除上傳的圖像。 但這是一個問題:默認情況下,此腳本使用以下PHP行刪除上傳的圖像:

<?php 
if(isset($_POST['file'])){
    $file = 'images/menu_images/' . $_POST['file'];
    if(file_exists($file)){
        unlink($file);
    }
}
?>

但是我無法刪除它,因為當我將圖像上傳到文件夾( images/menu_images/ )時,我將其重命名為類似的名稱: abedkd12415775554.jpg

我的問題是如何使用此腳本刪除上傳的圖像?

您需要返回從服務器腳本生成的新圖像名稱,例如-

在循環中,您正在執行在數據庫中插入文件名的操作,

$array = array("oldName" => "newName");
echo json_encode($array);

如果您在JavaScript端使用某種邏輯來創建數組,也可以使用數字索引。

在javascript on delete選項中,您可以使用圖像名稱檢索值,並可以執行刪除操作。

檢查這個

$res=mysqli_query("SELECT file FROM tbl_uploads WHERE id=".$_GET['remove_id']);
$row=mysqli_fetch_array($res);
mysqli_query("DELETE FROM tbl_uploads WHERE id=".$_GET['remove_id']);
unlink("uploads/".$row['file']);

替換您的表格和ID名稱

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM