0

嗨,我想在我的网站上为每个用户上传一个 100 x 100 像素的图像作为徽标。它可以在我的本地主机上工作,但不能在线工作(图片未上传)。这个概念很简单,我只需上传它并根据他们的 ID 重命名图像,然后将其显示在他们的页面上供他们查看。另一件事,本地主机版本更改了指定路径上的图像,但在上传后不显示它,但有时它工作得很好。好吧,这不是一个大案子,我只是认为这可能是解决这个问题的线索。到目前为止,这是我的代码:

这是在顶部声明的:

$data['base'] = $this->config->base_url();
$data['check_error'] = false;
$data['error_message'] = array();
$data['id'] = $this->session->userdata('id');

这是代码:

if (isset($_FILES['userfile']) && is_uploaded_file($_FILES['userfile']['tmp_name'])){
                    $new_name = $data['id'];

                $config['upload_path'] = './Logos/';
                $config['allowed_types'] = 'jpg|png|gif';
                $config['encrypt_name'] = true;
                $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');

                    }
                }

HTML:

 <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>

我也在本地使用 PHP 中的 CodeIgniter_2.1.3 和 5.4.3,在线使用 5.2.17。疯了哈哈!

4

1 回答 1

1

您应该查看文件名部分。首先,您已将条件设置encrypt_name为 true。虽然您无论如何都将文件重命名为 id,但这不是必需的。您将新文件名设置为等于

$data['id'].".jpg" 

如果上传的文件是 GIF 或 PNG 图像,这将永远无法工作......

于 2012-11-19T09:40:01.480 回答