Recuperando dados de um upload de arquivo

Essa dica é muito útil, pois em alguns casos é necessário recuperar informações de um arquivo que foi “upado” para o servidor, e gravar essas informações no banco.

O CodeIgniter tem uma library nativa para fazer o upload de arquivos, e esse upload é realizado através do método ‘do_upload()’.

Ao realizar um upload através da library nativa, caso ele tenha ocorrido com sucesso, você pode recuperar os dados do arquivo “upado” através do método ‘$this->upload->data()’, que retorna um array com as informações sobre o arquivo.

Veja um exemplo dos dados retornados por ‘$this->upload->data()’:

Array
(
        [file_name]     => mypic.jpg
        [file_type]     => image/jpeg
        [file_path]     => /path/to/your/upload/
        [full_path]     => /path/to/your/upload/jpg.jpg
        [raw_name]      => mypic
        [orig_name]     => mypic.jpg
        [client_name]   => mypic.jpg
        [file_ext]      => .jpg
        [file_size]     => 22.2
        [is_image]      => 1
        [image_width]   => 800
        [image_height]  => 600
        [image_type]    => jpeg
        [image_size_str] => width="800" height="200"
)
  • file_name: nome do arquivo
  • file_type: MIME type do arquivo
  • file_path: diretório onde o arquivo foi gravado
  • full_path: caminho completo do arquivo
  • raw_name: nome do arquivo (sem extensão)
  • orig_name: nome original do arquivo
  • client_name: nome final do arquivo
  • file_ext: extensão do arquivo
  • file_size: tamanho do arquivo (em Kb)
  • is_mage: se é imagem (1 ou 0)
  • image_width: largura da imagem
  • image_height: altura da imagem
  • image_type: tipo da imagem
  • image_size_str: string com as informações de largura e altura para inserir na tag <img>

Esses dados são retornados apenas se o upload foi executado com sucesso, sendo assim, você pode ver no código abaixo um exemplo de como verificar se um upload foi executado com sucesso ou não.

if (!$this->upload->do_upload('nome_do_input_file')) {
    //Ocorreu um erro e o upload não foi processado.
} else {
    //Upload processado com sucesso.
}

Você também consegue recuperar as informações de erro do upload, basta utilizar o método ‘$this->upload->display_errors()’. Veja a seguir um código onde chamamos a recuperação de erro em caso de falha no upload ou recuperamos os dados do upload em caso de sucesso.

if (!$this->upload->do_upload('nome_do_input_file')) {
    //Ocorreu um erro e o upload não foi processado.
    $erros = $this->upload->display_errors();
} else {
    //Upload processado com sucesso
    $dadosImagem = $this->upload->data();
}

Com essas informações você pode gravá-las no banco de dados, retornar a URL da imagem para exibição em uma view e várias outras possibilidades, tudo vai depender das necessidades da sua aplicação.