【问题标题】:Uploading image on codeigniter , shows error :The upload path does not appear to be valid在 codeigniter 上上传图片,显示错误:上传路径似乎无效
【发布时间】:2020-12-31 18:45:00
【问题描述】:

我正在使用 php codeigniter 框架,并尝试在文件夹中上传图像并在配置文件视图中显示,但这是我上传文件时得到的结果:-

 Array (
    [upload_path] => ./community/photos/
    [allowed_types] => jpeg|jpg|png
    [max_size] => 100
    [max_width] => 1024
    [max_height] => 768
    [overwrite] => 1
    [file_name] => 1600052487_Musical-Birthday-Candle-Magic-Lotus-Flower-Candles-Blossom-Rotating-Spin-Party-Candle-14Small-Candles-2layers-Cake.jpg
 ) 

上传路径似乎无效。

profile.php 控制器

public function do_upload()
    {
        echo "<pre>";
        //print_r($_FILES);
        //die;
        if(!empty($_FILES['filename']['name'])){ 
            $config['upload_path']          = FCPATH.'application/';
            $config['allowed_types']        = 'jpeg|jpg|png';
            $config['max_size']             = 100;
            $config['max_width']            = 1024;
            $config['max_height']           = 768;
            $config['overwrite']            = true;
            $config['file_name']            = time().'_'.$_FILES['filename']['name'];

            print_r($config);
                        //echo var_dump(is_dir(FCPATH.'uploads/'));

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

            if ( ! $this->upload->do_upload('filename')) 
            {
                //echo "sdfs";
                print_r($this->upload->display_errors());
                die;
                   // $error = array('error' => $this->upload->display_errors());
                $this->session->set_flashdata ('success','Invalid Credentils');
                redirect('myProfile');
                 //   $this->load->view('admin/profile/index', $error);
            }
            else
            {
                echo "xcvcx";
                die;
                    $data = array('user_profile' => $this->upload->data());

                    $this->load->view('admin/profile/index', $data);
            }
        }else{
            echo "dfgfd";
        }
    }

index.php 视图

<h2 class="heading">Profile</h2>
         <div class="row">
           <div class="col-md-3">
            <div class="profile-img">
                 <?php if (!empty($user->photo)): ?>
               <img src="/uploads/<?php echo $user->photo; ?>" alt="<?php echo $user->photo; ?>">
                  <?php endif;?>
                  <img src="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS52y5aInsxSm31CvHOFHWujqUx_wWTS9iM6s7BAm21oEN_RiGoog" alt=""/>
                  
                 
                 <?php echo form_open_multipart('admin/profile/do_upload');?>

                 <div class="file btn btn-lg btn-primary">
                     <i class="fa fa-pencil-square-o"></i>
                      <input id="choose_image" type="file" name="filename" />
                </div>
                <button id="SubmitBtn" type="submit" style="display:none">Upload photo</button>
                </form>
            </div>

autoload.php

$autoload['libraries'] = array('database','session','form_validation','encryption','upload');
$autoload['helper'] = array('url','form', 'file');

我尝试了几种解决方案,但仍然遇到相同的错误。

【问题讨论】:

  • 你为什么有 $config['upload_path']= FCPATH.'application/' 但你的 print_r($config) 显示的是 ./community/photos/。
  • 这是在 Windows 还是 Linux 上?
  • 我添加了 ./community/photos/。看看它是否解决了这个问题,它并没有把它删除。我正在使用 mac
  • 好的,./community/photos 在您的文件结构中位于何处?
  • 您可能需要将您在社区/照片文件夹中的文件权限设置为 0775 或类似。

标签: php codeigniter file-upload


【解决方案1】:

你有没有尝试在做do_upload之前把初始化CI文件上传类? .

我经常用这个

 $this->upload->initialize($set_upload);//my func class for config
   //generally they use $this->upload->initialize()
        if (!$this->upload->do_upload('userfile')){


        }

【讨论】:

  • 我添加了,现在出现错误:上传目标文件夹似乎不可写
  • 尝试用这个 $config['upload_path'] = './uploads/' 改变路径; @RoxanaSlj
  • 太好了,我已成功将照片上传到我的上传文件夹中,但仍然没有显示在视图中
  • 不,我的意思是关闭这个问题。但是没问题。如果您上传到文件夹的照片没有显示在视图中,那么问题是 1. 控制器,2. 您的 url img,检查它@RoxanaSlj
【解决方案2】:

我认为上传的路径应该是“./application”

【讨论】:

    【解决方案3】:
    <?php if (!empty($user->photo)): ?> 
    <img src="<?php echo base_url('uploads/'.$user->photo;);?>" alt="<?php echo $user->photo; ?>">
     <?php endif;?>
    

    【讨论】:

    • 您遇到了什么问题?你能不能得到破碎的形象?通过在新标签中打开图像检查其路径。
    【解决方案4】:

    我遇到了同样的问题,但我的是拼写错误。

    而不是使用这个

    $this->upload->initialize($config);
    

    由于复制和粘贴,我不小心使用了这个

    $this->load->initialize($config);
    

    我花了几个小时才弄明白。我希望我能帮助到某人。

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多