Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法以codeigniter文本形式上载文件_Php_Forms_Codeigniter - Fatal编程技术网

Php 无法以codeigniter文本形式上载文件

Php 无法以codeigniter文本形式上载文件,php,forms,codeigniter,Php,Forms,Codeigniter,我有一个文本表单可以工作,我有一个文件上传表单可以使用来自的确切示例工作,但我似乎无法将两者结合起来。我想要一个允许文本和文件上传的表单。文本应转到数据库,文件应转到存储,文件路径保存在数据库中 我试着加上 enctype="multipart/form-data" 到我的文本表单和文件上载表单元素。表单操作当前是以下方法(见下文)。我尝试将codeigniter文档中的方法添加到下面的方法中,以允许文件上载,但不幸的是,这不起作用。我做错了什么?我怀疑我需要调用$\u文件 public fu

我有一个文本表单可以工作,我有一个文件上传表单可以使用来自的确切示例工作,但我似乎无法将两者结合起来。我想要一个允许文本和文件上传的表单。文本应转到数据库,文件应转到存储,文件路径保存在数据库中

我试着加上

enctype="multipart/form-data"
到我的文本表单和文件上载表单元素。表单操作当前是以下方法(见下文)。我尝试将codeigniter文档中的方法添加到下面的方法中,以允许文件上载,但不幸的是,这不起作用。我做错了什么?我怀疑我需要调用$\u文件

public function save()
{
    $project_id = $this->input->post('project_id');
    $id = $this->input->post('task_id');

    if($this->input->post('cancel') !== FALSE) {
        if($id)
            redirect('task/view/'.$project_id.'/'.$id);
        else
            redirect('project/tasks/'.$project_id);
    }

    $this->load->library('form_validation');

    $this->form_validation->set_rules('title', 'Title', 'trim|required');
    etc....

    if($this->form_validation->run() === false)  {
        $this->error = true;

        if ($id)
            $this->edit ($project_id, $id);
        else
            if($project_id)
                $this->add ($project_id);
            else
                redirect('dashboard');

        return;
    }

    $this->load->model('task_model');

    $sql_data = array(
        'project_id'  => $project_id,
        etc...
    );
    if ($id)
        $this->task_model->update($this->input->post('project_id'), $id, $sql_data);
    else
        $id = $this->task_model->create($sql_data);

    //add in upload function here
    $config['upload_path'] = './upload/cell/';
    $config['allowed_types'] = 'gif|jpg|png|tif';
    $config['max_size'] = '1000';
    $config['max_width']  = '2024';
    $config['max_height']  = '1768';

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

    if ( ! $this->upload->do_upload())
    {
        $error = array('error' => $this->upload->display_errors());

        $this->load->view('upload_forms', $error);
    }
    else
    {
        $data = array('upload_data' => $this->upload->data());
    }
            // end of added uploader code

    redirect('project/tasks/'.$this->input->post('project_id'));
}

尝试使用字段名

 $this->upload->do_upload('upload');
而不是

$this->upload->do_upload();
该字段在HTML中的位置

<input type="file" name="upload"/>
还要确保上传路径有效且可写


查看更多信息

谢谢您的帮助,但我没有更改任何默认设置。我使用的是
,我知道文件路径是有效的,因为当我将其与codeigniter示例一起使用时,文件路径是有效的。不确定发生了什么,但我在乱搞代码,破坏了所有内容并恢复到该文件路径,现在它可以工作了???
If you would like to set your own field name simply pass its 
value to the do_upload function