验证是否在codeigniter中选择了要上载的文件

时间:2012-11-08 11:13:41

标签: php codeigniter

嗨,我在上传文件部分遇到了一些麻烦。基本上我有一个带有上传徽标部分的表单,其中如果用户没有选择徽标,他/她仍然可以同时更新他/她的个人资料,用户也可以选择上传徽标但是它有一些限制。现在我不知道如何验证该部分是否知道他/她是否选择了图像。这是我目前在CI控制器中的代码:

if (//CHECK IF THERE IS A FILE FOR UPLOAD){
                $new_name = $data['id'];

                $config['upload_path'] = './Logos/';
                $config['allowed_types'] = 'jpg|png|gif';
                $config['max_size'] = '100';
                $config['max_width']  = '100';
                $config['max_height']  = '100';

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

                    if ( ! $this->upload->do_upload())
                    {
                        array_push($data['error_message'], "You have the following errors in your entry:\n");
                        array_push($data['error_message'], "- Logo must be 100x100 pixels in size not exceeding 100KB with JPG,PNG or GIF format");
                        array_push($data['error_message'], "\nLogo upload failed.");
                        $data['check_error'] = true;
                    }
                    else
                    {
                        $data = array('upload_data' => $this->upload->data());

                        //DO UPDATE PART HERE
                        $file = $data['upload_data']['file_name'];
                        rename($config['upload_path'] . $file, $config['upload_path'] .$new_name.'.jpg');
                        //GO TO SETTINGS
                        $this->load->helper('url');  
                        redirect($data['base'].'settings');
                    }
                }

if中的部分是我想要设置验证的地方。我尝试了一些技巧,但所有这些技巧都无法正常工作。

这是我的视图部分,如果某个ID的徽标已经存在,则只显示他/她的徽标或显示默认徽标:

 <tr>
    <td><p class="titles">Logo</p></td>
    <td>
    <div>
        <input type="text" id="fileName" class="file_input_textbox" readonly="readonly">

        <div class="file_input_div">
          <input type="button" value="Browse" class="file_input_button" />
          <input type="file" class="file_input_hidden" onchange="javascript: document.getElementById('fileName').value = this.value" id="upload" name="userfile" />
        </div>
    </div>
    </td>
</tr>

<tr>
<td>
</td>
<td>
<p class="titles">100px x 100px jpg, png or gif only.</p>
</td>
</tr>

<tr>
<td><p class="titles">Current Logo</p></td>
<td>
    <img src="<?php if(is_array(@getimagesize($base."Logos/".$id.".jpg"))){echo $base."Logos/".$id.".jpg";}else{echo $base."Logos/default.jpg";} ?>"  style="margin:0px 0px 0px 90px;"/>
</td>
</tr>

1 个答案:

答案 0 :(得分:14)

在获得CI的上传课程之前,我通常会使用原生PHP来检查文件是否正在上传:

if (isset($_FILES['upload_field_name']) && is_uploaded_file($_FILES['upload_field_name']['tmp_name'])) {
    //load upload class with the config, etc...
    $this->load->library('upload', $config);
}