Codeigniter - 一个表单中的两个上传字段

时间:2013-08-19 15:58:51

标签: codeigniter upload

我正在尝试从包含两个文件输入字段的表单上传Codeigniter中的图像和mp3。图像字段称为userfile,mp3字段称为trackfile。

在我的模型中,我有这段代码(已修改):

        $image_resource = $this->library_model->upload_image($_FILES);
        $data = array(
            'name' => $this->input->post('name'),
            'imageresource' => $image_resource
            );          

        $this->db->insert('table_name',$data);
        $insert_id = $this->db->insert_id();
        if ($_FILES && $_FILES['trackfile']['name'] !== "") {
            $config = array(
                'allowed_types' => 'mp3',
                'upload_path' => './assets/samples/'
            );
            $this->load->library('upload',$config);
            //echo 'about to upload';
            if ($this->upload->do_upload('trackfile')) {
                $file_data = $this->upload->data();
                //echo 'uploaded: <pre>'; print_r($file_data); echo '</pre>'; die();
                $track_data['trackfile'] = $file_data['file_name'];
                $this->db->where('id', $insert_id);
                return $this->db->update('table_name',$track_data);
            } else {
                echo 'Failed: '; 
                echo $this->upload->display_errors();   
                echo 'FILE DATA: <pre>'; print_r($_FILES['trackfile']); echo '</pre>';
            } 
        }

我的问题是,这会产生错误“不允许您尝试上传的文件类型。”我检查了mp3类型,它是audio / mpeg,它位于mimes.php文件中。

当我上传图片时,只发生 。如果我将图像字段留空,则mp3上传很好。任何帮助非常感谢。

1 个答案:

答案 0 :(得分:1)

修改

根据CI文档,配置的allowed_types部分是mime类型的管道分隔列表,而不是文件扩展名。例如,mp3具有mime类型&#39; audio / mpeg&#39;。因此,您的allowed_types配置应如下所示:

$config = array(
            'allowed_types' => 'audo/mpeg|audio/x-wav|audio/x-aiff|application/ogg',
            'upload_path' => './assets/samples/'
           );

如果这不起作用,请尝试initialize所提到的here库。