0

ファイルが既に存在する場合、codigniter によって新しく生成されたファイル名を取得する方法は?

イメージ ファイルをプロジェクト(uploads)フォルダに挿入し、その名前i.e image.pngをデータベース テーブルに挿入しています。

私のフォルダcar.pngに存在する画像です。uploadsもう一度car.png画像をアップロードしようとすると、現在car1.png、古い画像を置き換えることなくアップロードフォルダーに保存されています。新しい画像名を取得car1.pngしてデータベースに保存したいのですが、実際にはフォームから送信している名前を保存していcar.pngます。

私が使用したファイル名を取得するには

 $img1=$_FILES['img1']['name'];  
 //this gives me the name of file which i am uploading from my form  i.e car.png 

私の問題を解決するのを手伝ってください。お願いします....

4

1 に答える 1

1

codeingiter のファイル アップロード クラスを使用していないようです。あなたの問題を解決するので、それを使用することをお勧めします。

同じ名前のファイルをアップロードし、渡したオプションで上書きを FALSE に設定した場合、codeigniter は car.png の名前car1.png (または利用可能な次の番号) に変更します。

アップロードが成功すると、そのファイルに関連するすべてのデータを含む配列が返されます

Array
(
    [file_name]    => mypic.jpg
    [file_type]    => image/jpeg
    [file_path]    => /path/to/your/upload/
    [full_path]    => /path/to/your/upload/jpg.jpg
    [raw_name]     => mypic
    [orig_name]    => mypic.jpg
    [client_name]  => mypic.jpg
    [file_ext]     => .jpg
    [file_size]    => 22.2
    [is_image]     => 1
    [image_width]  => 800
    [image_height] => 600
    [image_type]   => jpeg
    [image_size_str] => width="800" height="200"
)

ご覧のとおり、この方法では、ファイルが変更されていても、ファイルの名前を取得できます。

ファイル アップロード クラスとその実装方法について詳しくは、http: //ellislab.com/codeigniter/user-guide/libraries/file_uploading.htmlをご覧ください。

EDIT2ビューで入力ファイルに名前を付ける必要がありますuserfile1 、userfile2、userfile3など

class Upload extends CI_Controller {

  function __construct()
  {
    parent::__construct();
    $this->load->helper(array('form', 'url'));
  }

  function index()
  {
    $this->load->view('upload_form', array('error' => ' ' ));
  }

  function do_upload(){
   $config['upload_path'] = './uploads/';
   $config['allowed_types'] = 'gif|jpg|png';
   $config['max_size']    = '100';
   $config['max_width']  = '1024';
   $config['max_height']  = '768';

   $this->load->library('upload', $config);
   foreach($_FILES as $key => $value){ 
     if ( ! $this->upload->do_upload($key)){
      $error = array('error' => $this->upload->display_errors());
      $this->load->view('upload_form', $error);
    }else{   
        //This $data is the array I described before
      $data = array('upload_data' => $this->upload->data());
        //So if you this you will get the file name
      $filename = $data['upload_data']['file_name'];
    }
  }
  $this->load->view('upload_success', $data);
}
}
?>
于 2013-03-02T16:19:43.337 に答える