18

ビューで

 <?php echo form_open_multipart('welcome/do_upload');?>
 <input type="file" name="userfile" size="20" />

コントローラーで

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';
    $config['overwrite'] = TRUE;
    $config['encrypt_name'] = FALSE;
    $config['remove_spaces'] = TRUE;
    if ( ! is_dir($config['upload_path']) ) die("THE UPLOAD DIRECTORY DOES NOT EXIST");
    $this->load->library('upload', $config);
    if ( ! $this->upload->do_upload('userfile')) {
        echo 'error';
    } else {

        return array('upload_data' => $this->upload->data());
    }
}

そして、私はこの関数を次のように呼び出します

 $this->data['data'] = $this->do_upload();

この画像を表示します。

<ul>
<?php foreach ($data['upload_data'] as $item => $value):?>
<li><?php echo $item;?>: <?php echo $value;?></li>
<?php endforeach; ?>
</ul>

何がエラーなのかわからない。

4

7 に答える 7

17

問題は、フォーム リクエストを に送信し、で別welcome/do_uploadのメソッドを呼び出すことにあるようです。Welcome::do_upload()$this->do_upload()

したがって、 2 番目のメソッド$this->do_upload();内でを呼び出すと、配列はになります。$_FILES

var_dump($data['upload_data']);そしてそれが を返す理由NULLです。

からファイルをアップロードする場合は、 を呼び出すwelcome/second_methodwelcome/second_methodにフォーム リクエストを送信します。$this->do_upload();

次に、フォーム ヘルパー関数 ( View内) を次のように変更します1 :

// Change the 'second_method' to your method name
echo form_open_multipart('welcome/second_method');

CodeIgniter を使用したファイルのアップロード

CodeIgniterは、ファイル アップロード ライブラリを使用して、アップロード プロセスを非常によく文書化しています。

ユーザー ガイドのサンプル コードを参照してください。また、設定のアップロードについて理解を深めるために、マニュアル ページの最後にある設定項目の説明セクションを確認してください。

また、CodeIgniter でのファイルのアップロードに関する記事やサンプルがいくつかあります。

補足として: CodeIgniter サンプル コードを使用する前に、ヘルパー関数urlとヘルパー関数を読み込んでいることを確認してください。form

// Load the helper files within the Controller
$this->load->helper('form');
$this->load->helper('url');

// Load the helper files within the application/config/autoload
$autoload['helper'] = array('form', 'url');


1. ファイルをアップロードするには、フォームが「マルチパート」タイプである必要があります。したがって、次を返す `form_open_multipart()` ヘルパー関数を使用する必要があります。
于 2013-06-26T12:49:26.720 に答える
0

このようにコードを変更します。それは完全に機能します:

public function uploadImageFile() //gallery insert
{ 
    if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $new_image_name = time() . str_replace(str_split(' ()\\/,:*?"<>|'), '', 
    $_FILES['image_file']['name']);
    $config['upload_path'] = 'uploads/gallery/'; 
    $config['allowed_types'] = 'gif|jpg|png|bmp|jpeg';
    $config['file_name'] = $new_image_name;
    $config['max_size']  = '0';
    $config['max_width']  = '0';
    $config['max_height']  = '0';
    $config['$min_width'] = '0';
    $config['min_height'] = '0';
    $this->load->library('upload', $config);
    $upload = $this->upload->do_upload('image_file');
    $title=$this->input->post('title');
    $value=array('title'=>$title,'image_name'=>
    $new_image_name,'crop_name'=>$crop_image_name);}
于 2017-05-03T11:44:13.113 に答える