0

会社情報を編集するための編集フォームがあります。ロゴをアップロードするためのフィールドもあります。[ファイルの選択] をクリックし、[送信] (フォーム) をクリックすると、データベースにファイル名がたとえば imagename.jpg として保存されます。

また、画像をフォルダー assets/uploads/ に追加したいと考えています。他のアップロード フォームと同じように、codeigniter アップロード クラスを使用して試しましたが、これは機能しません。理由はわかりません。

ここに私の編集フォームがあります:

<?= form_open_multipart('members/update/'.$id);?>
//other fields for editing company
    <tr>
    <td><?= form_label('Logo:'); ?></td>
    <td><input type="file" name="logo" size="20" /></td>
    </tr>


    <tr>
    <td><?= form_submit('submit', 'Opslaan');?> <?= form_reset('reset', 'Reset');?></td>
    </tr>

</table>
<?= form_close()?>

私のコントローラー:

function update() //de update functie voor bovenstaande functie.
{
    $id = $this->uri->segment(3);
    $data = array(
       'Bedrijfsnaam' => $this->input->post('Bedrijfsnaam'),
       'Postcode' => $this->input->post('Postcode'),
       'Plaats' => $this->input->post('Plaats'),
       'Telefoonnummer' => $this->input->post('Telefoonnummer'),
       'Email' => $this->input->post('Email'),
       'Website' => $this->input->post('Website'),
       'Profiel' => $this->input->post('Profiel'),
       'Adres' => $this->input->post('Adres'),
    );
    if($this->input->post('logo')) { $data['logo'] = $this->input->post('logo'); }
    $config['upload_path'] = './assets/uploads/';
    $config['allowed_types'] = 'gif|jpg|png';
    $config['max_size'] = '1000';
    $config['max_width']  = '';
    $config['max_height']  = '';
    $config['overwrite'] = TRUE;
    $config['remove_spaces'] = TRUE;

    $this->load->library('upload', $config);

    if ( ! $this->upload->do_upload())
    {
        $error = array('error' => $this->upload->display_errors());
    }
    else
    {
        $data = array('upload_data' => $this->upload->data());
    }
    $this->members_model->updatebedrijf($id, $data);

    $b = $this->session->userdata('idbedrijven');
    redirect("members/$b");
}   
function updatebedrijf($id, $data)
{
    foreach($this->input->post('categorieen') as $cat){
        $this->db->where('idbedrijven', $id);
        $this->db->update('bedrijven', $data); 

        $to_bedrijfcategorieen2['idcategorieen'] = $this->input->post('categorieen');
        $this->insert_bedrijfcat1($to_bedrijfcategorieen2); 
    };

}

私のモデル:

function updatebedrijf($id, $data)
{
    foreach($this->input->post('categorieen') as $cat){
        $this->db->where('idbedrijven', $id);
        $this->db->update('bedrijven', $data); 

        $to_bedrijfcategorieen2['idcategorieen'] = $this->input->post('categorieen');
        $this->insert_bedrijfcat1($to_bedrijfcategorieen2); 
    };

}

アップロードしないだけです。パスは私の他のアップロード機能と同じです。それはうまくいきます。

4

3 に答える 3

1

do_upload関数にフィールド名が設定されていません

 if ( ! $this->upload->do_upload("logo"))
{
    $error = array('error' => $this->upload->display_errors());
}else{
 $image_data = $this->upload->data();

}

そして、フィールドのifチェックがあり、logoなぜ投稿しようとしているのに1つの問題がありますか?? そのはず

if($_FILES['logo']['name'] != '') { $data['logo'] = $_FILES['logo']['name']; }
于 2013-06-13T08:08:16.067 に答える
0
if ( ! $this->upload->do_upload(?))

デフォルトの「userfile」ではないため、ファイル名をアップロード関数の引数として設定する必要がありますか?

于 2013-06-13T07:44:50.073 に答える
0

目覚めたソリューションはありませんでした。これが私が思いついた方法です。

if ($_FILES['userfile']['name'] != null) {
            // upload configuration
            $upload_config = array(
                'upload_path' => './assets/uploads/',
                'allowed_types' => 'jpeg|jpg|png',
                'max_size' => 1048576,
                'max_width' => 10240,
                'max_height' => 7680,
                'encrypt_name' => TRUE
            );
            // load upload library config
            $this->load->library('upload', $upload_config);
            if (!$this->upload->do_upload()) {
                // assign upload errors
                $data['upload_errors'] = $this->upload->display_errors();
                // load page title
                $page['title'] = "Edit Parent";
                // fetch parent information
                $this->db->select('Database Query');
                // info data in row
                $data['info'] = $this->db->get()->row();
                // load view with page title
                $this->load->view('temp/header', $page);
                $this->load->view('editParents', $data);
                $this->load->view('temp/footer');
            } else {
                $upload_photo = $this->upload->data();
                // profile image
                $parent_photo = $upload_photo['file_name'];
            }
        } else {
            // profile image
            $parent_photo = $this->input->post('profile_image');
        }
于 2016-12-17T06:55:55.373 に答える