CodeIgniter 1.7.2 ile Geçersiz yükleme rehberi

2 Cevap php

Ben CodeIgniter 1.7.2 ile bir görüntü yükleme formu oluşturmak için çalışılıyor

Ben bir resim upload çalıştığınızda Ancak, CI yükleme dizini geçersiz bana bildirir.

Bunu kontrol etmek için, ben, Hello, World! Sonra bunun içeriğini yankılandı, ve bak şu işe test.txt içerikle denilen uploads dizinine bir dosya yükledi o merhaba diyor. Bunun ötesinde, ben dizine gidin ve benim tarayıcıda bunun içeriğini görüntülemek, böylece dizin kesinlikle var ve görüntülenebilir olabilir.

Denetleyici:

class Pictures extends Site_Controller {
    // snip...
    public function upload() {
        $this->load->helper('form');
        $this->_render('Do Upload','pictures/upload',array('msg'=>''));
    }
    public function do_upload() {
        $this->load->helper('form');

        $config['upload_path'] = base_url().'uploads/';
        // test the directory:
        // echo file_get_contents($config['upload_path'].'test.txt');
        // should echo "Hello, World!"
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size']    = '2048';
        $config['max_width']  = '1024';
        $config['max_height']  = '768';

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

        if ( ! $this->upload->do_upload())
        {
            $data = array('msg' => $this->upload->display_errors());

            $this->_render('Do Upload (Errors!)','pictures/upload',$data);
        }    
        else
        {
            $uploaddata = $this->upload->data();
            $this->load->model('pictures_Model','pictures');
            $this->pictures->insertUploaded($uploaddata,$this->input->post('name'),$this->input->post('caption'));

            $data['msg'] = 'Successful Upload!';
            $this->_render('Do Upload (Success!)','pictures/upload',$data);
        }
    }
    //...
}

$this->_render() belirtilen bir başlık ile bir düzende belirtilen verilerle belirtilen görünümü sarar sadece bir kısayol işlevidir.

pictures/upload görünüm:

<h1>Do Upload</h1>
<? if (isset($msg)) echo $msg; ?>

<?= form_open_multipart('pictures/do_upload');?>

<input type="file" name="userfile" />
<input type="text" name="name" />
<input type="text" name="caption" />

<br /><br />

<input type="submit" value="Upload" />

</form>

Son olarak, ve muhtemelen gereksiz, modeli uç:

public function insertUploaded($data,$name,$caption) {
    $row = array();
    $row['filename'] = $data['file_name'];
    $row['mime'] = $data['file_type'];
    $row['size'] = $data['file_size'];
    $row['name'] = $name;
    $row['caption'] = $caption;
    $row['img'] = file_get_contents($data['full_path']);

    $this->db->insert('pictures',$row);
}

Herhangi bir fikir neden benim yükleme dizini geçersiz?

2 Cevap

 $config['upload_path'] = base_url().'uploads/';

Siz bu değiştirmeniz gerekir:

 $config['upload_path'] = './uploads/';

Bu dizin okunabilir olmadığında bile dizini bulmak ya mümkün değilken CI bu hata üretir. İlk dizin gibi ince geldiğini bulmaya çalışın:

echo base_url().'uploads/';

Bu gelirse, dizin izinleri ile kontrol edin. 755 chmod.

Hatta dizin izni ince ise, upload yoluna çizgisinin altına eklemeyi deneyin.

$config['upload_path'] = $_SERVER['DOCUMENT_ROOT'] . '/' . base_url().'uploads/';

Yolunuz dışarı yankılanan tarafından ince geliyor emin olun.

Umut olur.