Ejemplo n.º 1
0
 /**
  * Salvar os arquivos carregados
  *
  * @param string $nm Nome do arquivo a ser salvo
  * @param bool   $se Se true, sobrescreve o arquivo atual, se existir
  *
  * @return int Quantidade de arquivos salvos
  * @throws \DL3Exception
  */
 public function salvar($nm = null, $se = false)
 {
     # Diretório onde os arquivos serão salvos
     $d = ".{$this->diretorio}";
     $qt = 0;
     if (!file_exists($d)) {
         throw new \DL3Exception(sprintf(ERRO_UPLOAD_SALVAR_DIRETORIO_NAO_LOCALIZADO, $d), 1404);
     }
     // Fim if
     foreach ($this->obterArquivos() as $a) {
         if ($a['erro'] !== 0 || !file_exists($a['tmp'])) {
             continue;
         }
         // Fim if
         # Contar a quantidade de arquivos enviados
         $qt++;
         # Obter as informações desse arquivo
         $i = \Arquivos::obterInfos($a['tmp']);
         $ext = !empty($i['extensao']) ? $i['extensao'] : end(explode('.', $a['nome']));
         # Verificar se a extensão do arquivo deve ser aceita ou se não há
         # limitação das extensões
         if (count($this->extensoes) > 0 && !in_array($i['extensao'], $this->extensoes)) {
             # Remover o arquivo temporário para não ter o risco de sobrecarregar o servidor
             unlink($a['tmp']);
             # Incluir o nome do arquivo no vetor $nao_salvos
             $this->nao_salvos['extensao'][] = $a['nome'];
             if ($this->conf_bloq_extensao) {
                 throw new \DL3Exception(sprintf(ERRO_UPLOAD_SALVAR_BLOQ_EXTENSAO, $a['nome'], implode(', ', $this->extensoes)), 1403);
             }
             // Fim if
             # Passar para o próximo passo do laço
             continue;
         }
         // Fim if
         $n = $this->definirNome($i['nome'], $nm);
         $c = "{$d}/{$n}.{$ext}";
         if (!$se) {
             $q = 0;
             while (file_exists($c)) {
                 $c = "{$d}/{$n}-{$q}.{$ext}";
                 $q++;
             }
             // Fim while
         }
         // Fim if
         if (move_uploaded_file($a['tmp'], $c)) {
             $this->salvos[] = $c;
         }
         // Fim if
     }
     // Fim foreach
     return count($this->salvos);
 }