2013-02-15 74 views
4

我使用Codeigniter的上傳類將圖像上傳到項目中的文件夾。在數據庫中,我只存儲上傳圖像後生成的url,所以當我想要刪除db中的一行時,我也需要刪除圖像。我怎樣才能在codeigniter中做到這一點?如何使用Codeigniter刪除上傳的文件?

我將不勝感激您的答案。

+4

'delete_row_from_db();取消關聯( '/路徑/到/文件');'? – 2013-02-15 17:27:41

+0

它向我顯示一個錯誤,就像我無法從「http:// ...」 – user2065593 2013-02-15 19:22:05

+0

中刪除它,您無法從url中刪除,只能取消鏈接本地文件系統路徑。 – 2013-02-15 19:23:39

回答

10

您可以刪除特定路徑中的所有文件,例如在uploads文件夾,使用此功能deleteFiles()這可能是你的車型之一:

$path = $_SERVER['DOCUMENT_ROOT'].'/uploads/'; 

function deleteFiles($path){ 
    $files = glob($path.'*'); // get all file names 
    foreach($files as $file){ // iterate files 
     if(is_file($file)) 
     unlink($file); // delete file 
     //echo $file.'file deleted'; 
    } 
} 
3
delete_row_from_db(); unlink('/path/to/file'); 

/path/to/file必須是真實路徑。

對於如:

,如果你的文件夾是這樣的HTP://example.com/uploads

$ PATH = 真實路徑(APPPATH」 ../uploads');

APPPATH =應用程序文件夾的路徑。

它的工作...

1

如果(isset($ _ FILES [ '形象'])& & $ _FILES [ '形象'] [ '名稱']!= ''){

  $config['upload_path'] = './upload/image'; 
      $config['allowed_types'] = 'jpeg|jpg|png'; 
      $config['file_name'] = base64_encode("" . mt_rand()); 
      $this->load->library('upload', $config); 

      $this->upload->initialize($config); 

      if (!$this->upload->do_upload('image')) 
      { 
       $error = array('error' => $this->upload->display_errors()); 
       $this->session->set_flashdata('msg', 'We had an error trying. Unable upload image'); 
      } 
      else 
      { 
       $image_data = $this->upload->data(); 
       @unlink("./upload/image/".$_POST['prev_image']); 
       $testData['image'] = $image_data['file_name']; 
      } 
     } 
0
$m_img_real= $_SERVER['DOCUMENT_ROOT'].'/images/shop/real_images/'.$data['settings']->shop_now; 
$m_img_thumbs = $_SERVER['DOCUMENT_ROOT'].'/images/shop/thumbs/'.$data['settings']->shop_now; 

if (file_exists($m_img_real) && file_exists($m_img_thumbs)) 
{ 
    unlink($m_img_real); 
    unlink($m_img_thumbs); 
} 
0

查看:

<input type="file" name="new_file" data-required="1" class="" /> 
<input type="hidden" name="old_file" value="echo your old file name"/> 
<input type="submit" name="submit"/> 

控制器:

function edit_image() { 

if(isset($_FILES['new_file']['name']) && $_FILES['new_file']['name'] != '') { 

       move_uploaded_file($_FILES['new_file']['tmp_name'],'./public_html/banner/'.$_FILES['new_file']['name']); 

       $upload = $_FILES['new_file']['name']; 

       $name = $post['old_file']; 
       @unlink("./public_html/banner/".$name); 
      } 
      else { 

       $upload = $post['old_file']; 
      }    

} 
0
$image_data = $this->upload->data(); 
unlink($image_data['full_path']); 

此行$this->upload->data()會返回很多信息n關於上傳的文件。您可以打印信息並據此工作。