Advertisement
yesamarcos

Fazendo upload múltiplo de imagens

May 18th, 2018
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.60 KB | None | 0 0
  1. 1 - Configurar corretamente o HTML
  2. 2 - Contar a quantidade de imagens que devem ser enviadas
  3. 3 - Faz a configuração da biblioteca Upload do CI e inicializa
  4. 4 - Parte pro "for" com a variável dinâmica
  5. 5 - Usa uma função privada para escrever no banco de dados as imagens
  6.  
  7. Obs: Use sempre var_dump, print_r, echo pra debugar
  8.  
  9. <!DOCTYPE html>
  10. <html lang="en">
  11. <head>
  12.     <meta charset="UTF-8">
  13.     <title>Upload de imagens</title>
  14.     <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css">
  15. </head>
  16. <body class="container" style="margin-top:50px">
  17.     <form action="<?php echo base_url(uri_string()) ?>" method="POST" enctype="multipart/form-data">
  18.         <div class="row">
  19.             <div class="col-md-9">
  20.                 <label for="userfile">Selecione os arquivos</label>
  21.                 <input type="file" name="userfile[]" id="userfile" class="form-control" required multiple />
  22.             </div>
  23.             <div class="col-md-3">
  24.                 <label for="arquivos">&nbsp;</label>
  25.                 <input type="submit" class="btn btn-block btn-success" value="Enviar fotos" />
  26.                 <input type="hidden" name="nome_noivo" value="Marcos Vinicius" />
  27.             </div>
  28.         </div>
  29.     </form>
  30.     <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
  31. </body>
  32. </html>
  33.  
  34. <?php defined('BASEPATH') OR exit('No direct script access allowed');
  35.  
  36. class Apagar extends CI_Controller {
  37.  
  38.     public function __construct(){
  39.         parent::__construct();
  40.     }
  41.  
  42.     /**
  43.      * Upload de arquivos multiplos
  44.      * @return [type] [description]
  45.      */
  46.     public function upload(){
  47.  
  48.         // verificar se algo está sendo enviado
  49.         if ($_SERVER['REQUEST_METHOD'] == 'POST'){
  50.  
  51.             // armazenando os dados
  52.             $form = $_POST;
  53.  
  54.             // contador de arquivos
  55.             $arquivos = count($_FILES['userfile']['name']);
  56.  
  57.             // começar a configurar as propriedades do upload
  58.             $configuracao['upload_path'] = "{$_SERVER['DOCUMENT_ROOT']}/assets/testes/uploads/";
  59.             $configuracao['allowed_types'] = "jpg|jpeg|gif|png|bmp|xls|xlsx|pdf|doc|docx";
  60.             $configuracao['encrypt_name'] = TRUE;
  61.             $configuracao['max_size'] = '5000';
  62.             $configuracao['max_width'] = '5000';
  63.             $configuracao['max_height'] = '5000';
  64.  
  65.             // inicializando a classe de upload
  66.             $this->load->library("upload", $configuracao);
  67.  
  68.             // enviando os arquivos em um loop para pasta de destino
  69.             for ($i = 0; $i < $arquivos; $i++){
  70.                 // juntando as propriedades de cada imagem
  71.                 $_FILES["userfile_{$i}"] = [
  72.                     'name' => $_FILES['userfile']['name'][$i],
  73.                     'tmp_name' => $_FILES['userfile']['tmp_name'][$i],
  74.                     'size' => $_FILES['userfile']['size'][$i],
  75.                     'error' => $_FILES['userfile']['error'][$i],
  76.                     'type' => $_FILES['userfile']['type'][$i],
  77.                 ];
  78.                 // fazendo upload da imagem
  79.                 if($this->upload->do_upload("userfile_{$i}") == TRUE){
  80.                     // acessando o nome da imagem para colocar dentro pra DB
  81.                     $imagem = $this->upload->data()['file_name'];
  82.                     // criando um array com nome da imagem para enviar pra DB
  83.                     $dados_da_imagem = [
  84.                         'imagem' => $imagem,
  85.                         'cadastro' => date("Y-m-d H:i:s")
  86.                     ];
  87.                     // manter o conceito de tarefa única, responsabilidade única
  88.                     $escrever = $this->escreverImagemDB($dados_da_imagem);
  89.                 }
  90.             }
  91.         }
  92.         // renderizando a view do formulário
  93.         $this->load->view("testes/upload");
  94.     }
  95.  
  96.     /**
  97.      * Registrar a imagem no banco de dados
  98.      * @param  [type] $imagem [description]
  99.      * @return [type] [description]
  100.      */
  101.     private function escreverImagemDB($imagem){
  102.         // colocar na model
  103.         $this->db->insert('temporario', $imagem);
  104.     }
  105. }
  106.  
  107. /* End of file Apagar.php */
  108. /* Location: ./application/controllers/Apagar.php */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement