1

2 つのファイル アップロード フィールドを持つアップロード フォームがあります。ファイルをアップロードしてから、ファイル名をデータベースの同じ行に書き込もうとしています。ファイル名が独自の行に書き込まれることを除いて、すべてが機能しています。モデルに対して2つの別々の呼び出しを行っているためだと推測していますが、それぞれに独自の「if」ステートメントがあるため、1回の呼び出しでそれを行う方法がわかりません。

私の質問を明確にするために。アップロードされた 2 つのファイルの名前をデータベースの同じ行に書き込むにはどうすればよいですか?

どんなアイデアでも素晴らしいでしょう。これは私が取り組んでいるコードです。ありがとう。

意見:

<?php echo form_open_multipart('upload_controller');  ?>
<p>
    <input type="file" name="userfile">
</p>
<p>
    <input type="file" name="userfile1">
</p>
<p><?php echo form_submit('submit', 'Upload them files!') ?></p>
<?php form_close() ?>

コントローラ:

if (isset($_POST['submit'])) {
    $this->load->library('upload');

    if (!empty($_FILES['userfile']['name'])) {
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '100';
        $config['max_width'] = '1024';
        $config['max_height'] = '768';

        $this->upload->initialize($config);

        // Upload file 1
        if ($this->upload->do_upload('userfile')) {
            $img = $this->upload->data();
            $file_name = $img['file_name'];

            $this->load->model('upload_file', 'upload_model');
            $this->upload_model->upload_file1($file_name);
        }
    }

    if (!empty($_FILES['userfile1']['name'])) {
        $config['upload_path'] = './uploads/';
        $config['allowed_types'] = 'gif|jpg|png|jpeg';
        $config['max_size'] = '100';
        $config['max_width'] = '1024';
        $config['max_height'] = '768';

        $this->upload->initialize($config);

        // Upload file 2
        if ($this->upload->do_upload('userfile1')) {
            $img = $this->upload->data();
            $file_name = $img['file_name'];

            $this->load->model('upload_file', 'upload_model');
            $this->upload_model->upload_file2($file_name);
        } else {
            echo $this->upload->display_errors();
        }
    }
} else {
    $this->load->view("upload_form");
}

モデル:

public function upload_file1($file_name) {

    $data = array('file1' => $file_name);
    $this->db->insert('images_table', $data);
}

public function upload_file2($file_name) {

    $data = array('file2' => $file_name);
    $this->db->insert('images_table', $data);
}

データベース行:

| id | file1 | file2 |
4

1 に答える 1

1

このようにしてみてください(ファイルの数がある場合....あなたの場合は「2」です)

$this->load->model('upload_file', 'upload_model');
for($i=1;$i<=$numimg;$i++)                       //in your case $numimg = 2;
{
    if($this->upload->do_upload('File'.$i))      //File1,File2 are filenames
    {
       $img_data = $this->upload->data();
       $images[$i] = $img_data['file_name'];         
    }
 }
 $data['Image'] = implode(',',$images);
 $this->upload_model->upload_file($data);

あなたのモデルで:

public function upload_file2($data)
{
    $data = array('file_name' => $data['Image']);
    $this->db->insert('images_table', $data);
}

それだけです。データベースの使用から取得する場合

$images = explode(',',$data->file_name);

画像名の配列が表示されます。

于 2012-08-30T05:38:01.323 に答える