0

codeigniter を使用して写真をアップロードしようとしていますが、うまくいきません。ファイル名が表示されず、エラーのみが表示されます。ヘルパー ファイルもシステム フォルダーにありますが、写真はアップロードしません。

コントローラー: upload.php

<?php
     class Upload extends CI_Controller {
        function __construct()
   {
    parent::__construct();
    $this->load->helper(array('form', 'url','file'));
    }

    function index()
    {
    $this->load->view('upload_form', array('error' => ' ' ));
     }

    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';

    $this->load->library('upload', $config); 
    if ( ! $this->upload->do_upload())
    { 
        $error = array('error' => $this->upload->display_errors());

        $this->load->view('upload_form', $error);
    }
    else
    { 
        $data = array('upload_data' => $this->upload->data());

        $this->load->view('upload_success', $data);
    }
     }
     }
 ?>

ビュー: upload_form.php

<html>
   <head>
       <title>Upload Form</title>
   </head>
   <body>
        <?php echo $error;?>
         <?php echo form_open_multipart('upload/do_upload');?>
         <input type="file" name="userfile" size="20" />
            <br /><br />
            <input type="submit" value="upload" />
              </form>
       </body>
 </html>

upload_success.php

<html>
   <head>
      <title>Upload Form</title>
   </head>
   <body>
          <h3>Your file was successfully uploaded!</h3>
                 <ul>
              <?php foreach ($upload_data as $item => $value):?>
                 <li><?php echo $item;?>: <?php echo $value;?></li>
              <?php endforeach; ?>
          </ul>
           <p><?php echo anchor('upload', 'Upload Another File!'); ?></p>
              </body>
     </html>
4

1 に答える 1

0

do_upload() メソッドを呼び出すときは、常に入力フィールド名を指定します。これは実際の例の一部です。パターンに従ってください。動作するはずです。

$field_name = 'userfile';
if (isset($_FILES[$field_name]) && is_uploaded_file($_FILES[$field_name]['tmp_name'])) {
    $this->load->library('upload', $config);
    if (!$this->upload->do_upload($field_name)) {
        //upload failed
    } else {
        //upload passed
    }
}

また、アップロード ディレクトリが書き込み可能であることを確認してください。

于 2013-11-01T10:19:16.570 に答える