重命名并替换我的图像文件夹php中的图像

时间:2013-08-30 08:08:21

标签: php codeigniter

我是一个新手在应用程序上工作,我允许用户上传他们的照片,当他们需要更改图片我不能删除旧图片,因此也无法重命名。这是我在codeigniter中按照教程上传img的代码。

        $config['upload_path'] = './img/';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '1000';
        $config['file_name'] = $id.'_img';

        $this->load->library('upload', $config);

        if ( $this->upload->do_upload())
        {

                $this->view_data['message'] = "File Uploaded";
        }

在这里,我传递用户ID,因此需要重命名并用名称替换旧图像,如44_img .....任何帮助将不胜感激,提前感谢....

3 个答案:

答案 0 :(得分:3)

尝试删除旧文件:

$oldfile   = $config['upload_path'].$config['file_name'];
if( file_exists( $oldfile ) ){
    unlink( $oldfile );
}

答案 1 :(得分:2)

您可以使用$this->upload->data()检索与上传相关的数据,并在内部执行类似的操作:

  if ( $this->upload->do_upload())
  {

     $this->view_data['message'] = "File Uploaded";
     $data = $this->upload->data();
     $path = $data['full_path'];
     $dir  = dirname($path);
     $ext  = pathinfo($path, PATHINFO_EXTENSION);

     if(rename($path, $dir.'/'.$your_file_new_name.'.'.$ext)) {
        $this->view_data['message'] .= '<br/> And renamed';
     }
  }

请注意,您必须拥有足够的权限才能上传文件,尤其是在要上传的目录上写入权利。此外,良好的做法是为文件提供唯一的名称,并将它们分成用户相关的目录。例如,您可以将mysql用户ID与图像ID结合使用。

答案 2 :(得分:1)

如果您想要覆盖现有的那个,即删除旧版本并保存同名的新文件,那么

$config['overwrite'] = TRUE; 
$this->load->library('upload', $config);

如果你想保留两者,最好用旧版本保存新代码,代码会自动重命名新代码,你可以保存新上传图片的名称来访问它

$config['overwrite'] = FALSE; 
$this->load->library('upload', $config);
if ($this->upload->do_upload())
{
    $uploaded_filename = $this->CI->upload->file_name; //name of the save image
    $this->view_data['message'] = "File Uploaded";
}