1

ファイルのアップロードに少し問題があります。2つのファイルをアップロードしようとしていますが、何らかの理由で最初のファイルが2回アップロードされており、2番目のファイルの痕跡がありません。私は何が間違っているのですか?

ファイルアップロード機能(モデル):

public function file_upload($folder, $allowed_type, $max_size = 0, $max_width = 0, $max_height = 0)
{
    $folder = $this->path . $folder;

    $files = array();
    $count = 0;

    foreach ($_FILES as $key => $value) :
        $file_name = is_array($value['name']) ? $value['name'][$count] : $value['name'];
        $file_name = $this->global_functions->char_replace($file_name, '_');
            $count++;
            $config = array(
            'allowed_types' => $allowed_type,
            'upload_path'   => $folder,
            'file_name'     => $file_name,
            'max_size'      => $max_size,
            'max_width'     => $max_width,
            'max_height'    => $max_height,
            'remove_spaces' => TRUE
             );

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

        if (!$this->upload->do_upload($key)) :
            $error = array('error' => $this->upload->display_errors());
            return FALSE;
        else :
            $file = $this->upload->data();
            $files[] = $file['file_name'];
        endif;

    endforeach;
    if(empty($files)):
        return FALSE;
    else:
        return implode(',', $files);
    endif;
}

関数フォームファイルのアップロード(コントローラー):

public function dokument_insert()
{
    $this->admin_login_check();

    $dokument =explode(',', $this->doc->file_upload('/doc', 'pdf|PDF|doc|docx') );
    var_dump($dokument);
    $data = array(
        'naziv'         => $this->input->post('naziv_srb'),
        'opis'          => $this->input->post('opis_srb'),
        'path_pdf'      => $dokument[0],
        'path_doc'      => $dokument[1],
        'kategorija_id' => $this->input->post('kategorija'),
        'jezik_id'      => $this->input->post('jezik')
    );
    $this->doc->save($data);
}

ファイルのフォームの一部(表示):

<label for="dokument_pdf">Dokument PDF</label>
<input type="file" name="pdf" id="dokument_pdf">

<label for="dokument_doc">Dokument DOC</label>
<input type="file" name="doc" id="dokument_doc">
4

2 に答える 2

2

アップロードごとにアップロードライブラリを初期化する必要があります。

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

ユーザーガイド:https ://www.codeigniter.com/user_guide/libraries/file_uploading.html

于 2013-02-19T19:37:23.233 に答える
0

2つのドキュメントフィールドがあるため、とにかく2回ループするように見えます...

1つだけが必要な場合は、フォームから1つだけ送信するか、ForEachを使用せずに、固定名を使用してそれぞれを手動で処理します。

于 2013-02-20T11:45:46.387 に答える