2

私は codeigniter で作業用の複数のアップロードを作成しましたが、これらの 2 つのテーブルに同じ列名 (ID、名前)。画像とドキュメントをアップロードするためにコードを切り離したり、コンパートメントしたりする方法はありますか? それらを1つの機能にまとめたからです。

これが私のコードです。それは働いています。

見る

<?php echo form_open_multipart('test'); ?>
   <label>Images</label>
      <input type='file' multiple='multiple' name='userfile[]'>
   <label>Documents</label>
      <input type='file' multiple='multiple' name='userfile[]'>
<?php echo form_submit('submit', 'Upload them files!') ?>

コントローラ

function index()
{
    if (isset($_POST['submit']))
    {
        $this->load->library('upload');
        //$this->uploadfile($_FILES['userfile']);
        $files = $_FILES;
        $cpt = count($_FILES['userfile']['name']);
        for($i=0; $i<$cpt; $i++)
        {   

                $filename = $_FILES['userfile']['name']= $files['userfile']['name'][$i];
                $_FILES['userfile']['type']= $files['userfile']['type'][$i];
                $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
                $_FILES['userfile']['error']= $files['userfile']['error'][$i];
                $_FILES['userfile']['size']= $files['userfile']['size'][$i]; 


                $this->upload->initialize($this->set_upload_options());
                $this->upload->do_upload();
                $this->upload->data();
        }
    }
$this->load->view("test");
}
private function set_upload_options()
{   
//  upload an image and document options
    $config = array();
    $config['upload_path'] = './upload_documents/';
    $config['allowed_types'] = 'jpg|png|gif|jpeg|JPG|PNG|GIF|JPEG|pdf|doc|docx|xls|xlsx';
    $config['max_size'] = '0'; // 0 = no file size limit
    $config['max_width']  = '0';
    $config['max_height']  = '0';
    $config['overwrite'] = TRUE;


    return $config;
}

これらのコードは機能しており、すべてのファイルを目的のパスに転送できます。しかし、モデルの作成について疑問に思っていました。上記のコードを見て、変数「$filename」にファイルの名前を渡したように、ファイルの種類をどのように識別するのでしょうか。print_r($filename) を使用すると、すべてのファイル名とそのファイル拡張子が表示されます。これらの名前は、ファイルの種類に応じて 2 つのテーブルに挿入する名前です。

ファイル タイプを識別し、upload_image や upload_docu などの 2 つの関数を使用してモデルに渡すために使用する CodeIgniter または PHP コードのコードはありますか? 助けてください。

4

1 に答える 1

2

だからここにある..

コントローラ

function index()
{
    if (isset($_POST['submit']))
    {
        $this->load->library('upload');
        //$this->uploadfile($_FILES['userfile']);
        $files = $_FILES;
        $cpt = count($_FILES['userfile']['name']);
        for($i=0; $i<$cpt; $i++)
        {   

                $_FILES['userfile']['name']= $files['userfile']['name'][$i];
                $_FILES['userfile']['type']= $files['userfile']['type'][$i];
                $_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
                $_FILES['userfile']['error']= $files['userfile']['error'][$i];
                $_FILES['userfile']['size']= $files['userfile']['size'][$i]; 


                $this->upload->initialize($this->set_upload_options());
                $this->upload->do_upload();
                $this->upload->data();
                $ext = pathinfo($filename, PATHINFO_EXTENSION);
                $img_ext_chk = array('jpg','png','gif','jpeg','JPG','PNG', 'GIF', 'JPEG');
                if (in_array($ext,$img_ext_chk))
                {
                    $this->asset->add_image($filename);                            
                }
                else
                {
                    $this->asset->add_document($filename);
                }
        }
    }
}

そしてあなたのモデルに

public function add_image($filename)
{
$data = array ('images' => $filename);
$this->db->insert('asset_images', $data);
}

public function add_document($filename)
{
$data = array ('documents' => $filename);
$this->db->insert('asset_documents', $data);
}
于 2013-10-07T05:12:43.083 に答える