ずっとこの時点で行き詰っており、いくつもの書き込みを読んでも解決策を見いだせずにいます。
私はクイズのためのインターフェイスを作っています、そして、管理インターフェイスで、私はフォルダに画像をアップロードし、データベースに画像名をアップロードする必要があります。私は他のものに対処することができますが、画像のアップロードは、長い間、私をたくさん悩まされています。
以下の私のコードを見てください。
<?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();
?>
アップロードボックスにファイル名を返すjsを実行してみたところ、ファイル名が返ってきました。
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');
}
アップロードのパスについて、いくつかの組み合わせを試しましたが、唯一 TRUE
値を返したのは var_dump(is_dir('/wamp/www/quark_edorado/uploads'));
ですがこれも同じエラーを返します。
どこを間違えているのかわかりません。
私のディレクトリ構成は
/application/
/public/
css/
fonts/
images/
js/
/system/
/uploads/
Windowsマシンを操作し、WAMPを使用しています。違いはあるのでしょうか?
アップロードフォルダを質問にあるように元の場所に置き、次のようにしてください(base_urlへの相対パスを指定してください)。
$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);
}