Saya sudah lama terjebak pada titik ini dan bahkan setelah membaca sejumlah postingan, saya belum bisa menemukan solusinya.
Saya membuat antarmuka untuk kuis, dan di antarmuka admin, saya perlu mengunggah gambar ke folder dan mengunggah nama gambar ke database. Saya dapat menangani hal-hal lain tetapi upload gambar sangat mengganggu saya untuk waktu yang lama.
Silakan lihat kode saya di bawah ini.
<?php echo form_open_multipart('admin/update_question'); ?>
<?php echo form_hidden('questionid', $question->level); ?>
<?php echo form_label('Comment', 'comment'); ?>
<div class="input">
<?php
$arr_comment = array(
'name' => 'comment',
'id' => 'comment',
'value' => $question->comment
);
echo form_textarea($arr_comment);
?>
</div>
<br/>
<?php echo form_label('Answer', 'answer'); ?>
<div class="input">
<?php
$arr_answer = array(
'name' => 'answer',
'id' => 'answer',
'size' => '10000',
'value' => $question->answer
);
echo form_input($arr_answer);
?>
</div>
<br/>
<?php echo form_label('Image', 'userfile'); ?>
<div class="input">
<?php
$arr_image = array(
'name' => 'userfile',
'id' => 'userfile',
'value' => ''
);
echo form_upload($arr_image);
?>
</div>
<br/>
<?php
$arr_button = array(
'name' => 'submit',
'value' => 'Update Question',
'class' => 'btn primary large'
);
?>
<div class="input">
<?php echo form_submit($arr_button); ?>
</div>
<br/>
<?php
echo form_close();
if ($error != '')
echo '<div class="alert-message error">'. $error.' </div>';
echo validation_errors();
?>
Saya telah mencoba menjalankan js yang mengembalikan nama file di kotak unggah, dan memang mengembalikannya.
public function update_question() {
$comment = $this->input->post('comment');
$answer = $this->input->post('answer');
echo var_dump(is_dir(base_url().'uploads/'));
/*
* Uploading image
*/
$config['upload_path'] = base_url().'/uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_width'] = 0;
$config['max_height'] = 0;
$config['max_size'] = 0;
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
print_r($error);
}
else
{
$arr_image = array('upload_data' => $this->upload->data());
print_r($arr_image);
}
$questionid = $this->input->post('questionid');
$question_data = array(
'comment' => $comment,
'answer' => $answer
);
$this->load->model('adminmodel', 'admin');
$question_data = $this->admin->update_question_data($questionid, $question_data);
//redirect('admin/questions', 'location');
}
Untuk jalur unggahan saya, saya telah mencoba sejumlah atau kombinasi dan satu-satunya yang mengembalikan nilai TRUE
adalah var_dump(is_dir('/wamp/www/quark_edorado/uploads')));
tetapi ini juga mengembalikan kesalahan yang sama.
Saya tidak tahu di mana letak kesalahan saya.
Struktur direktori saya adalah
/application/
/public/
css/
fonts/
images/
js/
/system/
/uploads/
Saya mengoperasikan mesin Windows dan menggunakan WAMP. Apakah itu membuat perbedaan?
Saya melakukan autoloading library dan entah bagaimana ketika saya mencoba menginisialisasi konfigurasi dengan $this->load->library('upload', $config);
, hal itu tidak akan dilakukan.
Sebagai gantinya saya meletakkan file konfigurasi saya di config/upload.php
Metode lain untuk melakukannya adalah $this->upload->initialize($config);
Ok, letakkan folder upload Anda di tempat asli seperti yang Anda tunjukkan dalam pertanyaan Anda dan coba ini (berikan jalur relatif ke base_url Anda)
$config['upload_path'] = 'uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_width'] = 0;
$config['max_height'] = 0;
$config['max_size'] = 0;
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload()) {
$error = array('error' => $this->upload->display_errors());
print_r($error);
} else {
$arr_image = array('upload_data' => $this->upload->data());
print_r($arr_image);
}