2

私は、ユーザーが自分の写真をアップロードできるようにするアプリに取り組んでいる初心者です。写真を変更する必要がある場合、古い写真を削除できないため、名前も変更できません。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 のような名前に置き換える必要があります。

4

3 に答える 3

3

古いファイルを削除するには、これを試してください:

$oldfile   = $config['upload_path'].$config['file_name'];
if( file_exists( $oldfile ) ){
    unlink( $oldfile );
}
于 2013-08-30T08:23:15.717 に答える
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 を組み合わせることができます。

于 2013-08-30T08:21:24.663 に答える