<html>
<body>
<?php
require __DIR__."/vendor/autoload.php";
use \App\File\Upload;
//Se Existir este índice, Acesse o Arquivo
if(isset($_FILES['arquivo'])){
//INSTANCIA DE UPLOAD
$obUpload = new Upload($_FILES['arquivo']);
// //ALTERA NOME DO ARQUIVO
// $obUpload->setName($name.date("d-m-Y"));
//MOVE OS ARQUIVOS DE UPLOAD
$sucesso = $obUpload->upload(__DIR__."/files",false);
if($sucesso){
echo "Arquivo <strong>".$obUpload->getBasename()."</strong> enviado com sucesso!";
exit;
}
die ("Problemas ao enviar o arquivo!");
}
include __DIR__."/includes/formulario.php";
// include __DIR__."/includes/extrair.php";
require __DIR__."/vendor/autoload.php";
use \includes\Extract;
?>
</body>
</html>
<?php
namespace App\File;
class Upload{
/**Nome do ARQUIVo (sem extensão)
* @var string*/
private $name;
/**Extensão do ARQUIVo (sem ponto)
* @var string*/
private $extension;
/**Tipo do Arquivo
* @var string*/
private $type;
/**Nome temporario do Arquivo
* @var string*/
private $tmpname;
/**Código de erro do upload
* @var integer*/
private $error;
/**Tamanho do arquivo
* @var integer*/
private $size;
/**Contador de duplicação de arquivo
* @var integer*/
private $duplicates = 0;
/**Construtor da Classe
* @param array $file $_FILES[campo]*/
public function __construct($file){
$this->type = $file["type"];
$this->tempname = $file["tmp_name"];
$this->error = $file["error"];
$this->size = $file["size"];
$info = pathinfo($file["name"]);
$this->name = $info["filename"];
$this->extension = $info["extension"];
}
/**Método que altera nome do arquivo
* @var string*/
// public function setName($name){
// $this->name = $name;
// }
/**Método responsavel por retornar o nome do arquivo com sua extensão
* @return sting
*/
public function getBaseName(){
//VALIDA EXTENSÃO
$extension = strlen($this->extension) ? ".".$this->extension : "";
//VALIDA DUPLICAÇÃO
$duplicates = $this->duplicates > 0 ? date("d-m-Y")."-".$this->duplicates : "";
//RETORNA NOME COMPLETO
return $this->name.$duplicates.$extension;
}
//MÉTODO RESPONSÁVEL POR OBTER O POSSÍVEL NOME DO ARQUIVO
private function getPossibleBaseName($dir, $overwrite){
//SOBRESCREVER ARQUIVO
if($overwrite) return $this->getBaseName();
//NÃO PODE SOBRESCREVER ARQUIVO
$basename = $this->getBaseName();
//VERIFICAR DUPLICAÇÃO
if (!file_exists($dir."/".$basename)){
return $basename;
}
//INCREMENTAR DUPLICAÇÕES
$this->duplicates++;
//RETORNA O PRÓPIO MÉTODO
return $this->getPossibleBaseName($dir,$overwrite);
}
/**Método para mover arquivo de upload
* @param string
* @return boolean
*/
public function upload($dir, $overwrite = true){
//Verificar ERRO
if($this->error != 0) return false;
$path = $dir."/".$this->getPossibleBaseName($dir, $overwrite);
return move_uploaded_file($this->tempname,$path);
}
}
<?php
namespace includes;
class Extract{
private $zip_path;
private $extract_path;
private $zip;
private $res;
public function __construct(){
if ($_SERVER['REQUEST_METHOD']=="POST" and isset($_POST['someAction'])){
renameExtract();
}
$this->zip_path = "files\ESTRUTURA CBO.ZIP";
$this->extract_path = "files";
$this->zip = new ZipArchive;
$this->res = $zip->open($zip_path);
function renameExtract(){
for ($i = 0; $i < $zip->numFiles; $i++) {
$filename = $zip->getNameIndex($i);
$zip->renameName($filename,date('Ymd').$filename);
echo 'entrou aqui'.$i;
}
// Abertura do arquivo zip
if ($zip->open($zip_path, ZipArchive :: CREATE) === TRUE) {
// Extração de todos os arquivos do arquivo zip
$zip->extractTo($extract_path);
// Fechamento do arquivo zip
$zip->close();
echo 'Arquivos extraídos com sucesso';
} else {
echo 'Falha ao abrir arquivo zip';
}
}
}
}
?>
</body>
</html>