php

2011-04-19 6 views
7

में छवि को अनलिंक कैसे करें मैं सर्वर पर छवि अपलोड करता हूं और डेटा बेस में पथ को सहेजता हूं। अब मैं कि रिकॉर्ड के साथ कि रिकॉर्ड है और यह भी छवि हटाना चाहते मेरी कोडphp

$id=$_GET['id']; 
$select=mysql_query("select image from table_name where question_id='$id'"); 
$image=mysql_fetch_array($select); 
@unlink($image['image']); 
$result=mysql_query("delete from table_name where question_id='$id'");

जब मैं $ छवि गूंज [ 'छवि'] है; यह मुझे

http://www.example.com/folder/images/image_name.jpeg
रिकॉर्ड सफलतापूर्वक हटा दिया जाएगा लेकिन छवि सर्वर पर मौजूद है।

+2

साथ प्रतिस्थापित किया जाना चाहिए निकालें 'अनलिंक कॉल से @' कि क्या किसी भी त्रुटि आने –

+1

'चेतावनी को देखने के लिए: की लिंक रद्द(): http में अनलिंक करने/var की अनुमति नहीं है/www 11/ –

+0

पर www/test/delete_table.php एक्सटेंशन सही है? यह 'jpg' नहीं होना चाहिए या आप url –

उत्तर

33

आपको छवि को हटाने के लिए अपने सर्वर पर पथ का उपयोग करना होगा, यूआरएल नहीं।

unlink('/var/www/test/folder/images/image_name.jpeg'); // correct 

आप निकालना चाहिए @unlink() से पहले, उस मामले में आप त्रुटि संदेश कह "फाइल नहीं मिली" या ऐसा ही कुछ देखा होगा।

+0

सुझाता है लेकिन छवि पथ डेटाबेस से आता है जैसा कि मैंने अपने प्रश्न में उल्लेख किया है। तो मुझे कैसे पता होना चाहिए कि कौन सी छवि हटा दी गई है। –

+0

PHP 5.0.0 अनलिंक() के रूप में कुछ यूआरएल रैपर के साथ भी इस्तेमाल किया जा सकता है। http://www.php.net/manual/en/wrappers.php –

+0

शायद आपको छवि का पथ सहेजना चाहिए था। एक और तरीका (मैं कभी ऐसा नहीं करूंगा) 'str_replace' ('http: //www.example.com','/var/www/test',$url); 'पथ प्राप्त करने के लिए अनलिंक करने से पहले - लेकिन आपको वास्तव में इससे बचने की कोशिश करनी चाहिए - बस फ़ाइल में था पथ को सहेजें। – oezi

0

आपको अनलिंक के साथ सर्वर से फ़ाइल को हटाने के लिए सापेक्ष पथ का उपयोग करना चाहिए। यदि आप अपने डेटाबेस में पूर्ण पथ को सहेजते हैं, तो पहले आपको यह देखना होगा कि आप किस फ़ोल्डर को छवि हटाते हैं। इसलिए यदि आप "delete.php" www.example.com/folder/delete.php में है से चित्रों को मिटाने से आप कुछ इस तरह करना चाहिए:

$db_path = "http://www.example.com/folder/images/upArrow.png"; 
$len = strlen("http://www.example.com/folder/"); 
$new_path = substr($db_path, $len, strlen($db_path)-$len); echo " -> ".$new_path; 
if(isset($_POST['Submit'])){ 
     $return = unlink($new_path); 
      if($return){echo "Succes";}else{echo "Fail";} 
    } 
1

जब भी आप हटाना लिंक में अपने कोड का चयन करें। जैसे: <a href=addproduct.php?action=delete&pid=$get_info[pid]>Delete</a> तो आपको cuurent select item का उपयोग करके स्थिति की जांच करनी होगी।

if(isset($_GET['action']) && $_GET['action']=='delete' && isset($_GET['pid'])) 
{ 
    $query1=("select * from tablename where id='".$_GET['id']."'"); 
            $result1=mysql_query($query1); 
           while($data=mysql_fetch_array($result1)) 
           { 
            $delete=$data['file']; 
            unlink("../upload/$delete"); 

           } 
           $query=("delete from tablename where id='".$_GET['id']."'"); 
           $result=mysql_query($query) or die("not inserted". mysql_error()); 
            if($result==TRUE) 
            { 

             $_SESSION['msg']="product successfully deleted"; 
             header("Location:addproduct.php"); 
             exit; 

            } 
            else 
            { 
             $_SESSION['msg']="error in deleting product"; 
             header("Location:addproduct.php"); 
             exit; 
            } 
          } 
4

सीधे शब्दों में अगर आप पूरे यूआरएल के स्थान पर folder/images/image_name.jpeg का उपयोग अंदर का लिंक हटाने के यह काम करेंगे ठीक उदा
अनलिंक ("http://www.example.com/folder/images/image_name.jpeg");

unlink("folder/images/image_name.jpeg"); 
+0

अच्छा एक :) काम करता है! – habamedia

0
//http://www.example.com/folder/images/image_name.jpeg 

define("BASE_URL", DIRECTORY_SEPARATOR . "folder" . DIRECTORY_SEPARATOR); 
define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . BASE_URL); 

$folder_upload = "images/"; 

$image_delete = ROOT_PATH . $folder_upload . pathinfo($image['image'], PATHINFO_BASENAME); 

if (!empty($image['image'])) { 

    /* Delete */ 
    if (unlink($image_delete)) { 
     echo "<b>{$image_delete}</b> has been deleted";         
    } else { 
    echo "<b>{$image_delete}</b> error deleting ";           
    } 

} else { 
    echo "File image not exist"; 

} 

// http://localhost/folder/images/image_name.jpeg 
संबंधित मुद्दे

 संबंधित मुद्दे