【问题标题】:Codeigniter - Upload photo with user add formCodeigniter - 使用用户添加表单上传照片
【发布时间】:2018-12-02 11:01:31
【问题描述】:

我想知道...

我永远无法将任何照片上传到我的文件夹和数据库中。我试了几千次。我做错了什么,请帮助我。

我可以添加用户好。这不是问题。但我尝试上传照片,但从未上传任何照片。我的代码:

控制器:

     public function insert () {

            $config['upload_path'] = './upload/user/';
            $config['allowed_types'] = 'jpg|jpeg|png|gif';
            $config['max_size'] = 1024;
            $config['max_width'] = 100;
            $config['max_height'] = 100;
            $config['file_name'] = rand(100,999);
            $config['overwrite'] = false;

            $this->load->library('upload', $config);
            if(!$this->upload->do_upload('userImg')) {

                $this->load->view('user');
            }


        $data = array (
        "userUsername" => $this->input->post("userUsername"),
        "userPass" => $this->input->post("userPass"),
        "userEmail" => $this->input->post("userEmail"),
        "userName" => $this->input->post("userName"),
        "userSurname" => $this->input->post("userSurname"),
        "userImg" => $this->input->post("userImg"),
        "userLang" => $this->input->post("userLang"),
        "userType" => $this->input->post("userType"),
        "userDate" => date('Y-m-d H:i:s'),
   );
    $insert = $this->db->insert("user", $data);
    if($insert) {
    redirect(base_url("user"));
   }else {

    redirect(base_url("user"));

   }

}

和我的查看页面添加用户

<form class="cmxform form-horizontal tasi-form" id="signupForm" method="post" enctype="multipart/form-data" action="<?php echo base_url(); ?>user/insert">
        <div class="form-group last">
            <label class="control-label col-md-3">Avatar Upload:</label>
            <div class="col-md-9">
                <div class="fileupload fileupload-new" data-provides="fileupload">
                    <div class="fileupload-new thumbnail" style="width: 200px; height: 150px;">
                        <img src="http://www.placehold.it/200x150/EFEFEF/AAAAAA&amp;text=no+image" alt="" />
                    </div>
                    <div class="fileupload-preview fileupload-exists thumbnail" style="max-width: 200px; max-height: 150px; line-height: 20px;"></div>
                    <div>
                           <span class="btn btn-white btn-file">
                           <span class="fileupload-new"><i class="fa fa-paper-clip"></i> Select image</span>
                           <span class="fileupload-exists"><i class="fa fa-undo"></i> Change</span>
                           <input type="file" class="default" name="userImg" />
                           </span>
                    </div>
                </div>
                <span class="label label-danger">NOTE!</span>
                <span>
                     Please Upload Your Profile Photo!
                </span>
            </div>
        </div>
        <div class="form-group ">
            <label for="username" class="control-label col-lg-2">Username <span class="text-danger">*</span></label>
            <div class="col-lg-10">
                <input class=" form-control" id="username" name="userUsername" type="text" required="required" />
            </div>
        </div>
        <div class="form-group ">
            <label for="password" class="control-label col-lg-2">Password <span class="text-danger">*</span></label>
            <div class="col-lg-10">
                <input class="form-control " id="password" name="userPass" type="password" required="required" />
            </div>
        </div>
         <div class="form-group ">
            <label for="email" class="control-label col-lg-2">E-Mail <span class="text-danger">*</span></label>
            <div class="col-lg-10">
                <input class="form-control " id="email" name="userEmail" type="email" required="required" />
            </div>
        </div>

.....

请帮助我。谢谢大家。


编辑用户控制器:

public function update($userId) {
        if (isset($_FILES)) {
            $config['upload_path'] = './upload/user';
            $config['allowed_types']        = 'jpeg|jpg|png|gif';
            $config['max_size'] = 5000;
            $config['max_width'] = 4024;
            $config['max_height'] = 4068;
            $new_name = $this->input->post("userUsername");
            $config['file_name'] = $new_name;
            $this->load->library('upload', $config);
            $this->upload->initialize($config);
            if ( ! $this->upload->do_upload('userImg'))
            {
                $error = array('error' => $this->upload->display_errors());
                echo json_encode($error);
            }
            else{
                $upload_data = $this->upload->data();
                $data = array (
                    "userUsername" => $this->input->post("userUsername"),
                    "userPass" => $this->input->post("userPass"),
                    "userEmail" => $this->input->post("userEmail"),
                    "userName" => $this->input->post("userName"),
                    "userSurname" => strtoupper($this->input->post("userSurname")),
                    "userImg" => $upload_data['file_name'],
                    "userLang" => $this->input->post("userLang"),
                    "userType" => $this->input->post("userType"),
                    "userDate" => date('Y-m-d H:i:s'),
                );
                $update = $this->db->where("userId", $userId)->update("user", $data);
                if($update) {
                    redirect(base_url("user"));
                }else {
                    echo "Hata!";
                }
            }
        }
        else{
            $data = array (
                "userUsername" => $this->input->post("userUsername"),
                "userPass" => $this->input->post("userPass"),
                "userEmail" => $this->input->post("userEmail"),
                "userName" => $this->input->post("userName"),
                "userSurname" => strtoupper($this->input->post("userSurname")),
                "userLang" => $this->input->post("userLang"),
                "userType" => $this->input->post("userType"),
                "userDate" => date('Y-m-d H:i:s'),
            );
            $update = $this->db->where("userId", $userId)->update("user", $data);
            if($update) {
                redirect(base_url("user"));
            }else {
                echo "Hata!";
            }
        }
    }

编辑用户视图:

<div class="form">
                            <form class="cmxform form-horizontal tasi-form" id="signupForm" method="post" action="<?php echo base_url("user/update/$user->userId"); ?>">
                                <div class="form-group last">
                                    <label class="control-label col-md-3">Avatar Upload:</label>
                                    <div class="col-md-9">
                                        <div class="fileupload fileupload-new" data-provides="fileupload" value="<?php echo $user->userImg; ?>">
                                            <div class="fileupload-new thumbnail" style="width: 200px; height: 150px;">
                                                <img src="<?php echo base_url().'upload/user/'.$user->userImg; ?> alt="" />
                                            </div>
                                            <div class="fileupload-preview fileupload-exists thumbnail" style="max-width: 200px; max-height: 150px; line-height: 20px;"></div>
                                            <div>
                                                   <span class="btn btn-white btn-file">
                                                   <span class="fileupload-new"><i class="fa fa-paper-clip"></i> Select image</span>
                                                   <span class="fileupload-exists"><i class="fa fa-undo"></i> Change</span>
                                                   <input type="file" class="default" name="userImg" />
                                                   </span>
                                            </div>
                                        </div>
                                        <span class="label label-danger">NOTE!</span>
                                        <span>
                                             Please Upload Your Profile Photo!
                                        </span>
                                    </div>
                                </div>
                                <div class="form-group ">
                                    <label for="username" class="control-label col-lg-2">Username <span class="text-danger">*</span></label>
                                    <div class="col-lg-10">
                                        <input class=" form-control" id="username" name="userUsername" type="text" value="<?php echo $user->userUsername; ?>" />
                                    </div>
                                </div>
                                <div class="form-group ">
                                    <label for="password" class="control-label col-lg-2">Password <span class="text-danger">*</span></label>
                                    <div class="col-lg-10">
                                        <input class="form-control " id="password" name="userPass" type="password" value="<?php echo $user->userPass; ?>" readonly />
                                    </div>
                                </div>
                                 <div class="form-group ">
                                    <label for="email" class="control-label col-lg-2">E-Mail <span class="text-danger">*</span></label>
                                    <div class="col-lg-10">
                                        <input class="form-control " id="email" name="userEmail" type="email" value="<?php echo $user->userEmail; ?>" />
                                    </div>
                                </div>
                                <div class="form-group ">
                                    <label for="firstname" class="control-label col-lg-2">First Name <span class="text-danger">*</span></label>
                                    <div class="col-lg-10">
                                        <input class=" form-control" id="firstname" name="userName" type="text" value="<?php echo $user->userName; ?>" />
                                    </div>
                                </div>
                                <div class="form-group ">
                                    <label for="lastname" class="control-label col-lg-2">Last Name <span class="text-danger">*</span></label>
                                    <div class="col-lg-10">
                                        <input class="form-control " id="lastname" name="userSurname" type="text" value="<?php echo $user->userSurname; ?>" />
                                    </div>
                                </div>

                                <!-- Basic select -->
                                    <div class="form-group">
                                        <label class="control-label col-lg-3">Choose Language <span class="text-danger">*</span></label>
                                        <div class="col-lg-9">
                                            <select name="userLang" class="form-control">
                                                <option value="<?php echo $user->userLang; ?>"><?php echo $user->userLang; ?></option>
                                                    <option value="en">English</option>
                                                    <option value="ar">Arabic</option>
                                            </select>
                                        </div>
                                    </div>
                                    <!-- /basic select -->

                                    <!-- Basic select -->
                                    <div class="form-group">
                                        <label class="control-label col-lg-3">User Type <span class="text-danger">*</span></label>
                                        <div class="col-lg-9">
                                            <select name="userType" class="form-control">
                                                <option value="<?php echo $user->userType; ?>"><?php echo $user->userType; ?></option>
                                                <option value="1">Admin = 1</option>
                                                <option value="2">Yönetici = 2</option>
                                                <option value="3">Departman Sorumlusu = 3</option>
                                                <option value="4">Operatör = 4</option>
                                                <option value="5">Stajyer = 5</option>
                                            </select>
                                        </div>
                                    </div>
                                    <!-- /basic select -->

                                <!-- Basic select -->
                                <div class="form-group">
                                    <label class="control-label col-lg-3">Status <span class="text-danger">*</span></label>
                                    <div class="col-lg-9">
                                        <select name="userStatus" class="form-control">
                                            <option value="<?php echo $user->userStatus; ?>"><?php echo $user->userStatus; ?></option>
                                            <option value="1">Active</option>
                                            <option value="0">Deactive</option>
                                        </select>
                                    </div>
                                </div>
                                <!-- /basic select -->
                                <div class="form-group">
                                    <div class="col-lg-offset-2 col-lg-10">
                                        <button class="btn btn-success" type="submit" value="Upload">Edit User</button>
                                        <button class="btn btn-default" type="reset">Reset</button>
                                        <button class="btn btn-danger" type="cancel">Cancel</button>
                                    </div>
                                </div>
                            </form>
                        </div>

【问题讨论】:

  • 请提供您的错误信息。
  • @habib - 添加任何用户时我都不会出错。我只是无法将照片添加到我的目录和数据库中。
  • @AbdulAhmad Matin - 您的解决方案不会影响项目。谢谢你的心意。但是你能说我的问题的其他解决方案吗?我需要你的帮助。

标签: php codeigniter upload photo photo-upload


【解决方案1】:

如果您的 url 正确并且图片没有错误,则使用它可以正常工作并且图片上传。我测试过了。

public function insert () {
    $config['upload_path'] = './upload/user';
    $config['allowed_types']        = 'jpeg|jpg|png|gif';
    $config['max_size']             = 1024;
    $config['max_width']            = 1000;
    $config['max_height']           = 1000;
    $new_name = time();
    $config['file_name'] = $new_name;
    $this->load->library('upload', $config);
    $this->upload->initialize($config);
    if ( ! $this->upload->do_upload('userImg'))
    {
        $error = array('error' => $this->upload->display_errors());
            echo json_encode($error);
    }
    else{
    $upload_data = $this->upload->data();
    $data = array (
        "userUsername" => $this->input->post("userUsername"),
        "userPass" => $this->input->post("userPass"),
        "userEmail" => $this->input->post("userEmail"),
        "userName" => $this->input->post("userName"),
        "userSurname" => $this->input->post("userSurname"),
        "userImg" => $upload_data['file_name'],
        "userLang" => $this->input->post("userLang"),
        "userType" => $this->input->post("userType"),
        "userDate" => date('Y-m-d H:i:s'),
    );
    $insert = $this->db->insert("user", $data);
    if($insert) {
        redirect(base_url("user"));
    }else {

        redirect(base_url("user"));

    } 
  }
}

【讨论】:

    【解决方案2】:

    您可以使用此代码进行更新

    public function update($userId) {
            if (isset($_FILES) && $_FILES['userImg']['error'] == '0') {
                $config['upload_path'] = './upload/user';
                $config['allowed_types']        = 'jpeg|jpg|png|gif';
                $config['max_size']             = 1024;
                $config['max_width']            = 1000;
                $config['max_height']           = 1000;
                $new_name = $this->input->post("userUsername");
                $config['file_name'] = $new_name;
                $this->load->library('upload', $config);
                $this->upload->initialize($config);
                if ( ! $this->upload->do_upload('userImg'))
                {
                    $error = array('error' => $this->upload->display_errors());
                    echo json_encode($error);
                }
                else{
                    $upload_data = $this->upload->data();
                    $data = array (
                        "userUsername" => $this->input->post("userUsername"),
                        "userPass" => $this->input->post("userPass"),
                        "userEmail" => $this->input->post("userEmail"),
                        "userName" => $this->input->post("userName"),
                        "userSurname" => strtoupper($this->input->post("userSurname")),
                        "userImg" => $upload_data['file_name'],
                        "userLang" => $this->input->post("userLang"),
                        "userType" => $this->input->post("userType"),
                        "userDate" => date('Y-m-d H:i:s'),
                    );
                    $update = $this->db->where("userId", $userId)->update("user", $data);
                    if($update) {
                        redirect(base_url("user"));
                    }else {
                        echo "Hata!";
                    }
                }
            }
            else{
                $data = array (
                    "userUsername" => $this->input->post("userUsername"),
                    "userPass" => $this->input->post("userPass"),
                    "userEmail" => $this->input->post("userEmail"),
                    "userName" => $this->input->post("userName"),
                    "userSurname" => strtoupper($this->input->post("userSurname")),
                    "userLang" => $this->input->post("userLang"),
                    "userType" => $this->input->post("userType"),
                    "userDate" => date('Y-m-d H:i:s'),
                );
                $update = $this->db->where("userId", $userId)->update("user", $data);
                if($update) {
                    redirect(base_url("user"));
                }else {
                    echo "Hata!";
                }
            }
        }
    

    【讨论】:

    • 我没有出错,好吧谢谢你,但是当我选择要上传的照片时,现在没有照片上传系统。
    • 如果您选择照片,if 循环可以工作并上传图片,但如果您不选择文件或文件有错误else 工作。
    • 我明白了。但我选择一张照片并使用编辑用户按钮上传它。它没有上传我的照片。我看不到它的用户目录或数据库。我能做些什么呢?我的编辑按钮工作正常,因为它无需上传照​​片即可编辑其他所有信息。现在我无法上传任何关于编辑用户的照片。
    • 因为您的图像大小不适合当前将其更改为。 $config['max_size'] = 5000; $config['max_width'] = 4024; $config['max_height'] = 4068;
    • 不,兄弟,它不起作用。我改成你说的了。
    【解决方案3】:

    使用此代码进行更新。在视图和控制器中。

     <div class="form">
                                <form class="cmxform form-horizontal tasi-form" id="signupForm" enctype="multipart/form-data" method="post" action="<?php echo base_url("user/update/$user->userId"); ?>">
                                    <div class="form-group last">
                                        <label class="control-label col-md-3">Avatar Upload:</label>
                                        <div class="col-md-9">
                                            <div class="fileupload fileupload-new" data-provides="fileupload">
                                                <div class="fileupload-new thumbnail" style="width: 200px; height: 150px;">
                                                    <img src="<?php echo base_url().'upload/user/'.$user->userImg; ?> alt="" />
                                                </div>
                                                <div class="fileupload-preview fileupload-exists thumbnail" style="max-width: 200px; max-height: 150px; line-height: 20px;"></div>
                                                <div>
                                                       <span class="btn btn-white btn-file">
                                                       <span class="fileupload-new"><i class="fa fa-paper-clip"></i> Select image</span>
                                                       <span class="fileupload-exists"><i class="fa fa-undo"></i> Change</span>
                                                       <input type="file" class="default" name="userImg" />
                                                       </span>
                                                </div>
                                            </div>
                                            <span class="label label-danger">NOTE!</span>
                                            <span>
                                                 Please Upload Your Profile Photo!
                                            </span>
                                        </div>
                                    </div>
                                    <div class="form-group ">
                                        <label for="username" class="control-label col-lg-2">Username <span class="text-danger">*</span></label>
                                        <div class="col-lg-10">
                                            <input class=" form-control" id="username" name="userUsername" type="text" value="<?php echo $user->userUsername; ?>" />
                                        </div>
                                    </div>
                                    <div class="form-group ">
                                        <label for="password" class="control-label col-lg-2">Password <span class="text-danger">*</span></label>
                                        <div class="col-lg-10">
                                            <input class="form-control " id="password" name="userPass" type="password" value="<?php echo $user->userPass; ?>" readonly />
                                        </div>
                                    </div>
                                     <div class="form-group ">
                                        <label for="email" class="control-label col-lg-2">E-Mail <span class="text-danger">*</span></label>
                                        <div class="col-lg-10">
                                            <input class="form-control " id="email" name="userEmail" type="email" value="<?php echo $user->userEmail; ?>" />
                                        </div>
                                    </div>
                                    <div class="form-group ">
                                        <label for="firstname" class="control-label col-lg-2">First Name <span class="text-danger">*</span></label>
                                        <div class="col-lg-10">
                                            <input class=" form-control" id="firstname" name="userName" type="text" value="<?php echo $user->userName; ?>" />
                                        </div>
                                    </div>
                                    <div class="form-group ">
                                        <label for="lastname" class="control-label col-lg-2">Last Name <span class="text-danger">*</span></label>
                                        <div class="col-lg-10">
                                            <input class="form-control " id="lastname" name="userSurname" type="text" value="<?php echo $user->userSurname; ?>" />
                                        </div>
                                    </div>
    
                                    <!-- Basic select -->
                                        <div class="form-group">
                                            <label class="control-label col-lg-3">Choose Language <span class="text-danger">*</span></label>
                                            <div class="col-lg-9">
                                                <select name="userLang" class="form-control">
                                                    <option value="<?php echo $user->userLang; ?>"><?php echo $user->userLang; ?></option>
                                                        <option value="en">English</option>
                                                        <option value="ar">Arabic</option>
                                                </select>
                                            </div>
                                        </div>
                                        <!-- /basic select -->
    
                                        <!-- Basic select -->
                                        <div class="form-group">
                                            <label class="control-label col-lg-3">User Type <span class="text-danger">*</span></label>
                                            <div class="col-lg-9">
                                                <select name="userType" class="form-control">
                                                    <option value="<?php echo $user->userType; ?>"><?php echo $user->userType; ?></option>
                                                    <option value="1">Admin = 1</option>
                                                    <option value="2">Yönetici = 2</option>
                                                    <option value="3">Departman Sorumlusu = 3</option>
                                                    <option value="4">Operatör = 4</option>
                                                    <option value="5">Stajyer = 5</option>
                                                </select>
                                            </div>
                                        </div>
                                        <!-- /basic select -->
    
                                    <!-- Basic select -->
                                    <div class="form-group">
                                        <label class="control-label col-lg-3">Status <span class="text-danger">*</span></label>
                                        <div class="col-lg-9">
                                            <select name="userStatus" class="form-control">
                                                <option value="<?php echo $user->userStatus; ?>"><?php echo $user->userStatus; ?></option>
                                                <option value="1">Active</option>
                                                <option value="0">Deactive</option>
                                            </select>
                                        </div>
                                    </div>
                                    <!-- /basic select -->
                                    <div class="form-group">
                                        <div class="col-lg-offset-2 col-lg-10">
                                            <button class="btn btn-success" type="submit" value="Upload">Edit User</button>
                                            <button class="btn btn-default" type="reset">Reset</button>
                                            <button class="btn btn-danger" type="cancel">Cancel</button>
                                        </div>
                                    </div>
                                </form>
                            </div>
    

    这样的控制器。

    public function update($userId) {
            if (isset($_FILES) && $_FILES['userImg']['error'] == '0') {
                $config['upload_path'] = './upload/user';
                $config['allowed_types']        = 'jpeg|jpg|png|gif';
                $config['max_size']             = 1024;
                $config['max_width']            = 1000;
                $config['max_height']           = 1000;
                $new_name = $this->input->post("userUsername");
                $config['file_name'] = $new_name;
                $this->load->library('upload', $config);
                $this->upload->initialize($config);
                if ( ! $this->upload->do_upload('userImg'))
                {
                    $error = array('error' => $this->upload->display_errors());
                    echo json_encode($error);
                }
                else{
                    $upload_data = $this->upload->data();
                    $data = array (
                        "userUsername" => $this->input->post("userUsername"),
                        "userPass" => $this->input->post("userPass"),
                        "userEmail" => $this->input->post("userEmail"),
                        "userName" => $this->input->post("userName"),
                        "userSurname" => strtoupper($this->input->post("userSurname")),
                        "userImg" => $upload_data['file_name'],
                        "userLang" => $this->input->post("userLang"),
                        "userType" => $this->input->post("userType"),
                        "userDate" => date('Y-m-d H:i:s'),
                    );
                    $update = $this->db->where("userId", $userId)->update("user", $data);
                    if($update) {
                        redirect(base_url("user"));
                    }else {
                        echo "Hata!";
                    }
                }
            }
            else{
                $data = array (
                    "userUsername" => $this->input->post("userUsername"),
                    "userPass" => $this->input->post("userPass"),
                    "userEmail" => $this->input->post("userEmail"),
                    "userName" => $this->input->post("userName"),
                    "userSurname" => strtoupper($this->input->post("userSurname")),
                    "userLang" => $this->input->post("userLang"),
                    "userType" => $this->input->post("userType"),
                    "userDate" => date('Y-m-d H:i:s'),
                );
                $update = $this->db->where("userId", $userId)->update("user", $data);
                if($update) {
                    redirect(base_url("user"));
                }else {
                    echo "Hata!";
                }
            }
        }
    

    【讨论】:

    • 不,我接受此错误:{"error":" 您尝试上传的文件类型不被允许。"} 我选择 png-jpg-jpeg 的类型。它给了我一个错误。
    • 好的,所以您只需上传带有此扩展名的图片jpeg|jpg|png|gif
    • 不要将您的文件扩展名重命名为其他无法使用的扩展名。
    • 我只上传jpeg、jpg、png等右扩展名。但它给了我同样的错误。
    • : ( .. 删除 $config['allowed_types'] = 'jpeg|jpg|png|gif'; 但这不是一个好主意
    猜你喜欢
    • 2010-11-13
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    相关资源
    最近更新 更多