【问题标题】:Show Error: The upload path does not appear to be valid显示错误:上传路径似乎无效
【发布时间】:2019-04-05 14:48:07
【问题描述】:

我尝试通过 php codeigniter 上传图片,但显示“上传路径似乎无效”。

这个Action在xampp server和window 10中执行

public function do_upload($username) {
    $config = array(
        'upload_path' => "./assets/images/",
        'allowed_types' => "gif|jpg|png|jpeg",
        'overwrite' => TRUE,
        'max_size' => "2048000", 
        'max_height' => "768",
        'max_width' => "1024"
    );
    $this->load->library('upload', $config);
    if ($this->upload->do_upload()) {
        $data = array('upload_data' => $this->upload->data());
        print_r($data);
    } else {
        $error = array('error' => $this->upload->display_errors());
        print_r($error);
    }
}

这个代码我用了很多次,但我没有发现错误 代码中有什么错误, 如果我在其他项目中使用相同的代码,它将工作但不能在主项目中,请帮助,提前谢谢

【问题讨论】:

  • 我的意思是,错误信息很清楚。您正在尝试上传到一个不存在的路径,或者您的应用程序没有写入权限。
  • 我想你需要用'upload_path' => "assets/images/"替换'upload_path' => "./assets/images/"
  • 我已经在做,但没有工作

标签: php codeigniter file-upload


【解决方案1】:

在 CodeIgniter 中,您应该始终尝试使用常量 APPPATH 来查找应用程序文件夹。

APPPATH 是最好的,因为无论您在哪个操作系统上,它都会动态检索正确的文件系统目录结构。这可确保代码中的所有文件路径都是正确的。

但是,如果您不尝试访问 Application 文件夹。您可以使用FCPATH 常量,它动态地指向您的应用程序的前端控制器。

您收到此错误是因为 /assets/images 文件夹的路径无效。您需要确保路径正确。

【讨论】:

    【解决方案2】:

    首先你应该检查你是否在根目录中创建了文件夹 assets/images 文件夹,因为在配置中定义了这个路径

    $config = [
             'upload_path' => "./assets/images/",
            'allowed_types' => "gif|jpg|png|jpeg",
            'overwrite' => TRUE,
            'max_size' => "2048000", 
            'max_height' => "768",
            'max_width' => "1024"
      ];
      $this->load->library('upload',$config);
      $this->load->library('form_validation');
      $this->form_validation->set_error_delimiters('<div style="color:red;" class="error">', '</div>');
      if$this->upload->do_upload()){
        $img = $this->upload->data();
        $img_name = base_url('uploads/'.$img['file_name']);
        $data = $this->input->post();
        $data['image_path'] = $img_name;
        unset($data['submit']);
        return $this->flash_message(
                $this->articlemodel->add_article($data),
                'Article added sucessfully',
                'Article added to failed'
        );   
    
    
       }
       else
       {
        $upload_error = $this->upload->display_errors;
    
       }
    

    【讨论】:

      【解决方案3】:

      解决起来很简单

      1. 如果应用程序文件夹内的目录

        application -> assets -> images 
        
        'upload_path' => APPPATH. 'assets/images/';
        
      2. 如果目录在应用程序文件夹之外

        root folder -> assets -> images
        
        'upload_path' => FCPATH. 'assets/images/';
        

      【讨论】:

      • @RaviKantSharma 添加有问题的项目目录结构
      • localhost/project/assets/images/ 来回上传文件
      • 此代码仅在项目中不起作用,但在所有项目中都起作用
      • 可能是权限问题?
      • 尝试制作这样的目录if (!file_exists('path/to/directory')) { mkdir('path/to/directory', 0777, true); }
      猜你喜欢
      • 2020-12-31
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      相关资源
      最近更新 更多