【问题标题】:How to delete uploaded files with Codeigniter?如何使用 Codeigniter 删除上传的文件?
【发布时间】:2013-01-31 17:47:49
【问题描述】:

我使用 Codeigniter 的上传类将图像上传到项目中的文件夹。在数据库中我只存储上传图片后生成的url,所以当我想删除数据库中的一行时,我还需要删除图片。如何在 codeigniter 中做到这一点?

我会很感激你的回答。

【问题讨论】:

  • delete_row_from_db(); unlink('/path/to/file');?
  • 它显示了一个错误,就像我无法从“http://...”中删除它
  • 不能从 url 中删除,只能取消链接本地文件系统路径。
  • 如果文件在服务器上,/path/to/file 不应该有 http:// 协议。您需要在服务器的文件系统中指定实际路径。
  • 您可以使用文件助手中的“delete_files”功能删除所有文件。stackoverflow.com/questions/14178731/…

标签: php codeigniter upload


【解决方案1】:

您可以删除给定路径中的所有文件,例如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';
    }   
}

【讨论】:

    【解决方案2】:
    delete_row_from_db(); unlink('/path/to/file');
    

    /path/to/file 必须是真实路径。

    例如:

    如果你的文件夹是这样的 htp://example.com/uploads

    $path = 真实路径(APPPATH . '../uploads');

    APPPATH = 应用程序文件夹的路径。

    它的工作...

    【讨论】:

      【解决方案3】:

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

                  $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'];
                  }
              } 
      

      【讨论】:

        【解决方案4】:
        $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);
        }
        

        【讨论】:

          【解决方案5】:

          查看:

          <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'];
                      }              
          
          }
          

          【讨论】:

            【解决方案6】:

            尝试使用 CI 框架本身提供的delete_files('path') 函数: https://ellislab.com/codeigniter/user-guide/helpers/file_helper.html

            【讨论】:

              【解决方案7】:
              $image_data = $this->upload->data();
              unlink($image_data['full_path']);
              

              $this-&gt;upload-&gt;data() 这一行会返回很多关于上传文件的信息。您可以打印信息并进行相应的工作。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-04-27
                • 1970-01-01
                • 1970-01-01
                • 2017-08-15
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多