domingo, 29 de março de 2009

PHP Fazer upload com pastas diferentes

Esse post é para fazer um upload seguindo a numeração id do banco de dados de sinistros, ou seja ele cria uma pasta, caso ela não exista, e faz o upload se o nome do arquivo não existir dentro da pasta.

<?php
/* Defina aqui o tamanho máximo do arquivo em bytes: */
if($arquivo_size > 10240000) {
print "<SCRIPT> alert('Seu arquivo não poderá ser maior que 10mb'); window.history.go(-1); </SCRIPT>\n";
exit;
}

/* Defina aqui o diretório destino do upload */
if (!empty($arquivo) and is_file($arquivo)) {
if (!$qw) $xQ = "bd/downloads";
else $xQ='downloads';
chdir("$xQ");
// pega o endereço do diretório
$diretorio = getcwd();
// abre o diretório
$ponteiro = opendir($diretorio);
// monta os vetores com os itens encontrados na pasta
while ($nome_itens = readdir($ponteiro)) {
$itens[] = $nome_itens;
}

// ordena o vetor de itens
sort($itens);
// percorre o vetor para fazer a separacao entre arquivos e pastas
foreach ($itens as $listar) {
// retira "./" e "../" para que retorne apenas pastas e arquivos
if ($listar!="." && $listar!=".."){

// checa se o tipo de arquivo encontrado é uma pasta
if (is_dir($listar)) {
// caso VERDADEIRO adiciona o item à variável de pastas
$pastas[]=$listar;
} else{
// caso FALSO adiciona o item à variável de arquivos
$arquivos[]=$listar;
}
}
}

// lista as pastas se houverem
if ($pastas != "" ) {
foreach($pastas as $listar){
//echo "Pasta:$listar<br>";
if ($listar==$id_sinistro) $vai_pasta=1;
}
}

if ($vai_pasta!=1) {
$pasta = "$id_sinistro";
mkdir ($pasta, 0755);
}

chdir("$id_sinistro");
// pega o endereço do diretório
$diretorio = getcwd();

// abre o diretório
$ponteiro = opendir($diretorio);
// monta os vetores com os itens encontrados na pasta
while ($nome_itens = readdir($ponteiro)) {
$itens[] = $nome_itens;
}

// ordena o vetor de itens
sort($itens);
// percorre o vetor para fazer a separacao entre arquivos e pastas
foreach ($itens as $listar) {
// retira "./" e "../" para que retorne apenas pastas e arquivos
if ($listar!="." && $listar!=".."){

// checa se o tipo de arquivo encontrado é uma pasta
if (is_dir($listar)) {
// caso VERDADEIRO adiciona o item à variável de pastas
$pastas[]=$listar;
} else{
// caso FALSO adiciona o item à variável de arquivos
$arquivos[]=$listar;
}
}
}
// lista os arquivos se houverem
if ($arquivos != "") {
foreach($arquivos as $listar){
//echo "Arquivo:$listar<br>";
if ($listar==$arquivo_name) $vai_arquivo=1;
}
}
if ($vai_arquivo==1) {
print "<h3><center>Arquivo não enviado!</center></h3>";
print "<h4><font color='#FF0000'><center>Já existe esse nome de arquivo favor alterar.</center></font></h4>";
if ($qw) print "<br><a href='javascript:history.go(-1)'>« voltar</a>";
exit;
}

$caminho=$caminho.$arquivo_name;

/* Defina aqui o tipo de arquivo suportado */
if ((eregi(".zip$", $arquivo_name)) || (eregi(".ZIP$", $arquivo_name)) || (eregi(".xls$", $arquivo_name)) ||
(eregi(".xlsx$", $arquivo_name)) || (eregi(".doc$", $arquivo_name)) || (eregi(".docx$", $arquivo_name)) ||
(eregi(".gif$", $arquivo_name)) || (eregi(".jpg$", $arquivo_name))) {
copy($arquivo,$caminho);
//print "<h1><center>Arquivo enviado com sucesso!</center></h1>";
}
else{
print "<h1><center>Arquivo não enviado!</center></h1>";
print "<h2><font color='#FF0000'><center>Caminho ou nome de arquivo Inválido!</center></font></h2>";
exit;
}
}

Nenhum comentário:

Postar um comentário