【问题标题】:The upload path does not appear to be valid in codeigniter when upload image [duplicate]上传图片时,上传路径在codeigniter中似乎无效[重复]
【发布时间】:2020-06-12 07:01:57
【问题描述】:

我正在尝试使用上传图片制作粗略的内容。当我尝试上传时,它一直返回失败。我把 var_dump 它显示为 false,当我输入代码以显示它返回的错误时:

“上传路径似乎无效”

我一直在寻找解决方案,但一无所获。谁能帮我找出错误:

这是我的控制器:

 public function saveReimburse()
{
    validate_submitted_data(array(
        'nama' => 'required',
        'category_reimburse_id' => 'required',
        'amount' => 'required|numeric',
        'date_reimburse' => 'required',
        // 'photo' => 'required'
    ));
    // data
    $data = [
        'nama' => $this->input->post('nama'),
        'category_reimburse_id' => $this->input->post('category_reimburse_id'),
        'amount' => $this->input->post('amount'),
        'date_reimburse' => $this->input->post('date_reimburse'),
        'photo' => $_FILES['photo'],
        // 'status'=> $this->input->post("PENDING"),
        // 'nama' => $this->input->post('nama'),
    ];


    // condition
    $date = date('Y-m-d');
    $date = strtotime($date);
    $date = strtotime('-7 day', $date);

    if ($data['date_reimburse'] < date('Y-m-d', $date)) {
        echo json_encode(array('succes' => FALSE, 'message' => 'Max Reimburse was 1 week ago'));
    } else {
        // var_dump($data);
        // exit;
        if ($data['photo'] = "") {
        } else {
            $config = [
                'upload_path' => is_dir('assets/reimburse/') . 'assets/reimburse/',
                'allowed_types' => 'jpg|png|gif',
                'overwrite' => TRUE
            ];
            $this->load->library('upload', $config);
            $upload = $this->upload->do_upload('photo');

            var_dump($config);
            print_r($this->upload->display_errors());exit;

            var_dump($upload);exit;
            if (!$upload) {
                json_encode(array('success' => FALSE, 'message' => 'Failed Upload'));
                redirect('Reimburse/index', 'refresh');
            } else {
                $this->upload->data('file_name');
                $save = $this->reimburseModel->saveReimburse('reimburse', $data);
                var_dump($data);exit;
                if (!$save) {
                    echo json_encode(array('success' => FALSE, 'message' => 'Failed to reccord'));
                } else {
                    redirect('Reimburse/index', 'refresh');
                    echo json_encode(array('success' => TRUE, 'message' => 'Reimburse Success'));
                }
            }
        }
    }
}

【问题讨论】:

  • 这可能是由于无效的upload_path。检查您的upload_path
  • is_dir 返回一个布尔值,true 或 false - 将其连接到您的上传路径根本没有意义。
  • 我只是尝试使用 is_dir 但是当我使用“资产/报销”时它显示上传路径似乎无效
  • 不需要两次发布相同的问题。这应该作为重复删除

标签: php codeigniter uploading


【解决方案1】:

你必须在 codeigniter 中使用 base_path 作为物理路径。

$base_path = $this->config->item('base_path');

然后使用 $base_path 作为您的项目文件夹根目录,您可以访问项目文件夹中的任何文件夹来上传图片。

喜欢。 $base_path.'/'.'上传/';

【讨论】:

    【解决方案2】:

    改变这一行

    'upload_path' => is_dir('assets/reimburse/') . 'assets/reimburse/',
    

    进入这个

    'upload_path' => './assets/reimburse/',
    

    【讨论】:

    • 效果不佳
    【解决方案3】:

    检查这个的输出

    var_dump(is_dir(./assets/reimburse));
    

    如果为假,则文件夹的物理路径一定有问题

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 1970-01-01
      • 2018-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      • 2013-10-13
      • 2013-05-17
      相关资源
      最近更新 更多