0

すべて問題ありませんが、アップロードフォルダを開くと画像が表示されません。

これがコントローラー「admin_news」です。localhost / site / asset/uploadに画像ファイルをアップロードしようとしています。しかし、[送信]をクリックすると、情報(タイトル、ニュース、カテゴリ)のみが日付ベースに追加されますが、ファイルはアップロードされません。

    function __construct()
{
    parent::__construct();
    $this->load->helper(array('form', 'html', 'file'));
    $config['upload_path']   = base_url('asset/upload/');
    $config['allowed_types'] = 'gif|jpg|png';
    $this->load->library('upload', $config);
}


public function add_news(){
    $this->load->helper('form');  
    $this->load->model('AddNews');  
    $this->load->view('templates/header', $data);
    $this->load->view('admin/add_news');
    $this->load->view('templates/footer');
    if($this->input->post('submit')){
        if ($this->upload->do_upload('image'))
        {
            $this->upload->initialize($config);
            $this->upload->data();
        }
        $this->AddNews->entry_insert();
        redirect("admin_news/index");
    }
}

ビューには次のものしかありません。

        <?php echo form_open_multipart(''); ?>
    <input type="text" name="title" value="Title..." onfocus="this.value=''" /><br /> 
    <input type="file" name="image" /><br />

...。

4

2 に答える 2

1

これは URL であってはなりません:

$config['upload_path']   = base_url('asset/upload/');

サーバー上のどこかへのパスである必要があります。完全な絶対パスまたは相対パスのいずれかです (Codeigniter のすべてのパスは index.php からの相対パスです)。

次のいずれかを使用します。

// Full path
$config['upload_path'] = FCPATH.'asset/upload/';

// Relative
$config['upload_path'] = './asset/upload/';

もう一つ:

if ($this->upload->do_upload('image'))
{
    // You don't need this, and besides $config is undefined
    // $this->upload->initialize($config);

    // You don't seem to be doing anything with this?
    $this->upload->data();

    // Move this here in case upload fails
    $this->AddNews->entry_insert();
    redirect("admin_news/index");
}
// Make sure to show errors
else
{
    echo $this->upload->display_errors();
}
于 2012-12-29T19:21:00.317 に答える
0

あなたのコードでは、問題は do_upload メソッドの後に構成を宣言したことだと思います

if ($this->upload->do_upload('image'))
        {
            $this->upload->initialize($config);
            $this->upload->data();
        }

メソッドを使用する前に、構成を初期化する必要があります。それが問題だったと思います。do_uploadそのため、メソッドの前に構成を行う必要があります

于 2012-12-30T07:00:15.550 に答える