【问题标题】:can't upload image codeigniter no error无法上传图片codeigniter没有错误
【发布时间】:2026-01-31 20:50:01
【问题描述】:

上传图片文件时出现问题。

这是我的视图文件内容

<form action="<?php base_url()."profile/upload"?>" method="POST" enctype="multipart/form-data" >

    <input type="hidden" name="id_akun" value="<?php echo $query->id_akun?>"size="20" />
    <input type="file" name="userfile" required>
    <input type="submit" name="submit" value="Upload" class="btn btn-success" />
</form>

这是我的控制器(配置文件)

public function upload() {
    $config = array(
        'upload_path'     => dirname($_SERVER["SCRIPT_FILENAME"])."/upload/",
        'upload_url'      => base_url()."upload/",
        'allowed_types' => "gif|jpg|png|jpeg|pdf",
        'overwrite' => false,
        'max_size' => "2048000", 
        'max_height' => "768",
        'max_width' => "1024"
    );

    $this->load->library('upload', $this->config);
    if($this->upload->do_upload()) {
        echo "file upload success";
    } else {
        echo "file upload failed";
    }

}

当我尝试上传时,图像没有上传,并且没有显示错误。我地址栏中的 URL 如下所示 http://localhost/mataramtest/profile?id_akun=6&userfile=1.PNG&submit=Upload

【问题讨论】:

  • 您似乎忘记将字段名称传递给do_upload 方法:$this-&gt;upload-&gt;do_upload('userfile')
  • 您还需要将 url 回显到您的控制器:&lt;?php echo base_url()."profile/upload"?&gt;
  • 谢谢我忘记了 echo url 控制器,但仍然无法在我的 url 中直接上传到 profile/upload mataramtest/profile?id_akun=6&userfile=1.PNG&submit=Upload
  • 除了do_upload('userfile'),也请试试这个更改$this-&gt;load-&gt;library('upload', $config);

标签: codeigniter


【解决方案1】:

您的代码存在几个问题。修改并给出如下

 public function upload()
{
    $config = array(
        'upload_path'     => "./upload/",
        'allowed_types' => "gif|jpg|png|jpeg|pdf",
        'overwrite' => false,
        'max_size' => "2048000",
        'max_height' => "768",
        'max_width' => "1024"
        );
    $this->load->library('upload', $config);
    if($this->upload->do_upload('userfile'))
    {
        echo "file upload success";
    }
    else
    {
        echo "file upload failed";
    }
}

在视图文件中

<form action="<?php echo site_url("profile/upload");?>" method="POST" enctype="multipart/form-data" >
  <!--rest of the code is ok-->

【讨论】:

  • 谢谢,但我的 url 像这样 localhost/mataramtest/… 无法转到个人资料/上传
  • 不知何故您的表单正在通过GETmethod 提交。仔细检查您的代码,包括 JS 文件以了解发生的事情
【解决方案2】:
public function img_upload()
{
    $config = array(
        'upload_path' => "uploads",
        'allowed_types' => "*",
        'overwrite' => TRUE,
        'max_size' => "5048000", // Can be set to particular file size , here it is 2 MB(2048 Kb)
        'max_height' => "3000",
        'max_width' => "3000"
    );
    $this->upload->initialize($config);
    $this->load->library('upload', $config);

    if($this->upload->do_upload()) {
        $response   =    array('upload_data' => $this->upload->data());
    }
    else{
        $error              =   array('error'=>$this->upload->display_errors());
    print_r($error); 

    }

}

【讨论】: