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


Rename and replace an image in my images folder php

我是一个开发应用程序的新手,我允许用户上传他们的照片,当他们需要更改照片时,我不能删除旧照片,因此也不能重命名。以下是我的代码,按照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这样的名称替换旧图像。。。。。如有任何帮助,我们将不胜感激。。。。

尝试删除旧文件:

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

您可以使用$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相结合。

如果您想重写现有的,即删除旧的并保存同名的新的,则

$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";
}