CodeIgniter中$ _FILES为空

时间:2013-08-08 14:58:29

标签: php file codeigniter

我正在使用CodeIgniter开发一个表单。在此,其中一个字段是上传文件。我成功地遵循了一些关于CodeIgniter中文件上传的教程,但是,在我的工作中,$ _FILES总是空的,我看不出原因。我是这个框架中的新手。

观点:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <?php
            $this->load->helper('form');
            echo form_open_multipart($action); ?>
            Área:
            <select>
                <option value="1">Teste 1</option>
                <option value="2">Teste 2</option>
            </select> <br>

            Data de abertura: <input type="text" id="data_abertura" placeholder="tqv"> <br>

            Prioridade:<br>
            <input type="radio" name="prioridade" value="3">Alta<br>
            <input type="radio" name="prioridade" value="2">Média<br>
            <input type="radio" name="prioridade" value="1">Baixa<br>

            Anexar arquivo: <input type="file" accept="image/*, text/*, .doc, .docx, .pdf" name="arquivo" id="arquivo"><br>

            Descrição: <br><textarea rows="4" cols="50" id="descricao" name="descricao"></textarea><br>
            <input type="submit" id="enviar" name="enviar" value="Enviar">
         <?php echo form_close() ?>
    </body>
</html>

控制器:

<?php 
class c_Formulario extends CI_Controller {
public function __construct() 
{
    parent::__construct();
    $this->load->helper('url');
}

public function index()
{
    $data['action'] = site_url('c_formulario/inserir_dados');
    $this->load->view('v_formulario', $data);
}

public function inserir_dados()
{ 
    $config['upload_path'] = './upload/';
    $config['allowed_types'] = 'gif|jpg|png|doc|docx|pdf|txt';
    $config['max_size'] = '100';

    $this->load->library('upload');
    $this->upload->initialize($config);
    var_dump($_FILES);

    foreach($_FILES as $field => $file)
    {
        //var_dump($_FILES); die();                
        // No problems with the file
        if($file['error'] == 0)
        {
            // So lets upload
            if ($this->upload->do_upload($field))
            {
                $data = $this->upload->data();
                echo $data['full_path'];
            }
            else
            {
                $errors = $this->upload->display_errors();
                var_dump($errors);
            }
        }
    }

    $this->load->model('m_formulario', '', TRUE);

    $area = array('id' => null, 'nome' => $this->input->post('area', TRUE));
    $data = array('id' => null, 'dataabert' => $this->input->post('data_abertura', TRUE));
    $prioridade = array('id' => null, 'nome_prioridade' => $this->input->post('prioridade', TRUE));
    $arquivo = array('id' => null, 'urlarquivo' => $this->input->post('arquivo', TRUE));
    $descricao = array('id' => null, 'descricao' => $this->input->post('descricao', TRUE));

    $dados = array
    (
        'area' => $area, 
        'data' => $data,
        'prioridade' => $prioridade,
        'arquivo' => $arquivo,
        'descricao' => $descricao
    );

    $this->m_formulario->inserir($dados);
}

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

在config / mimes.php文件中,您是否正确配置了所有扩展名mime类型(pdf,txt,...)?

如果缺少mime类型,你可以在google上找到正确的mime类型;)

答案 1 :(得分:0)

我不确切知道为什么,但改变了允许的类型我解决了这个问题。 $ config ['allowed_types'] ='*';我正在测试一些txt和png文件。好吧,现在好了。对不起这个坏问题。