Ir para conteúdo
Fórum Script Brasil
  • 0

descompactar arquivo zip


Mosaniel

Pergunta

Olá amigos,

estou presisando muito de uma ajuda com o cadastro das fotos descompactadas ".zip" para o banco de dados MY SQL

As fotos estão sendo descompactadas normalmente na devida pasta da galeira tudo certo. Mas não cadastra as memas no banco de dados, não sei como fazer.

<?  
include("valida_cookies.php");
include("../include/config_admin.php"); 
include("../include/conexao.php");
$nivel = $HTTP_COOKIE_VARS['nivel'];

?>
<?
$acao = $_POST[acao];
$pasta = $_POST[pasta2];
$foto01 = $_POST[foto01];
$foto02 = $_POST[foto02];
$foto03 = $_POST[foto03];
$foto04 = $_POST[foto04];
$foto05 = $_POST[foto05];
$fotos_zip = $_POST[fotos_zip];


// Nome do diretorio que receberá os arquivos do uplaod. Não se esqueça de dar permissão de escrita a ele 
$sql=mysql_query("select id,pasta from $tb2 where id=$pasta");
$reg=mysql_fetch_array($sql);
        $diretorio    = $reg['pasta'];
        $idgal = $reg['id'];
$dir2="../fotos/galerias/$diretorio";
//echo "$dir2<br>";

$uploaddir="$dir2";
//echo $uploaddir;
?>
<h3><strong>Fotos Enviadas</strong></h3>
<? if($acao == "zip") {?>
  <Table align="center" cellpadding="2" cellspacing="0">

<tr> 
          <td width="60" align="right" valign="middle" bgcolor="#e5e5e5" style="border-bottom:1px solid #cccccc;border-top:1px solid #cccccc">Fotos:</td>
          <td width="300" valign="middle" bgcolor="#e5e5e5" style="border-bottom:1px solid #cccccc;border-top:1px solid #cccccc">
<?       
// DESCOMPACTA OS ARQUIVOS
$arquivo = $_FILES['fotos_zip']['name']; // pega nome do arquivo 
$arquivotemp = $_FILES['fotos_zip']['tmp_name']; // pega nome temporario do arquivo 
    if(copy($arquivotemp,$uploaddir.$arquivo)){ // faz copia do arquivo zipado
        require_once('zip.lib.php'); //requer o arquivo, deve estar na mesma pasta
        $archive = new PclZip($uploaddir.$arquivo); 
        $list = $archive->extract(PCLZIP_OPT_PATH, "$dir2",PCLZIP_OPT_REMOVE_ALL_PATH); // extrai todos arquivos
        $sql2=mysql_query("select id,pasta from $tb2 where id=$pasta");
        $nome= $diretorio; 
               $sql2="INSERT INTO $tb3 (id, nome, galeria, descricao,foto) VALUES ('','$nome','$idgal','$descricao','$foto')";
               mysql_query($sql2) or die("erro no cadastro da foto => ".$foto." -ERRO- ".mysql_error()); 
               
        unlink($uploaddir.$arquivo); // exclui o arquivo zip mandado
echo "<strong>$arquivo</strong> enviado com sucesso!";
// FIM DO DESCOMPACTA OS ARQUIVOS
}
?>

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
$foto não está sendo definida em lugar algum... as fotos sempre vão para pastas diferente ou é tudo para a mesma pasta?

Olá,

As fotos vão sempre para a pasta da Galeria que eu escolher na hora de enviar as fotos "$pasta".

Esqueci disso também a parte $foto era pra ser destinada as fotos que foram descompactadas.

Link para o comentário
Compartilhar em outros sites

  • 0

bom,

fiz o teste aqui só que não entendo onde tem a parte onde tem "test.zip"

include_once('pclzip.lib.php');
  
  $zip = new PclZip("test.zip");
  
  if (($list = $zip->listContent()) == 0) {
    die("Error : ".$zip->errorInfo(true));
  }
  
  for ($i=0; $i<sizeof($list); $i++) {
    for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
      echo "File $i / [$key] = ".$list[$i][$key]."";
    }
    echo "";
  }

Dá esse erro

Fotos: Error : PCLZIP_ERR_MISSING_FILE (-4) : Missing archive file 'test.zip'

Editado por Mosaniel
Link para o comentário
Compartilhar em outros sites

  • 0
dando erro de arquivo não encontrato, tenta setar o caminho completo, ex: c:/wamp/htdocs/zips/test.zip

Certo mas é esse test.zip que não sei o que é entende.

porque não exist

teria que pegar o arquivo zipado que vai para o servidor?

porque no código ele exclui o arquivo zip

ele apenas descompacta as fotos que estão dentro do arquivo zip

Link para o comentário
Compartilhar em outros sites

  • 0

Bom estou eu aqui novamente ainda com esse problema

Consegui resolver o caso o test.zip

agora ele aparece o nome dos arquivos, status, etc.

Só que o nome do arquivo tá assim:

f/imagem.jpeg

tipo "F" é o nome do arquivo zip. então tá nome do arquivo zip / nome da foto.extenção

queria saber como pegar o nome da foto apenas e enviar todas as fotos do arquivo zipado para o bd mysql, pois a função que sei só manda um item.

e queria enviar todos.

Agradeço quem puder me ajudar.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom pegar apenas o nome da imagem é possivel com a função explode.

Exemplo:

$var = "f/imagem.jpeg";
$explode = explode("/",$var); // aqui ele quebra a variavel aonde encontrar / e salva na array explode.
$imagem = $explode[1]; // pegamos o valor 1, no caso a posição 2 da array, que contém o nome da imagem.

Agora, para salvar na base, qual a dificuldade em mandar mais de 1 imagem?

Qual a função que você tem que faz só manda 1, assim nós adaptamos a mesma.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom de alguma forma eu consegui fazer com que enviasse os arquivos e tal.

só que dá esse erro

DSC01522.JPG

'filename'DSC01707.JPG

'stored_filename'leeee.jpg

'stored_filename'ninas.jpg

'stored_filename'rave metal.jpg

'stored_filename'rock star.jpg

'stored_filename'rock4.jpg

'stored_filename'rockgif.gif

'stored_filename'

Warning: next() [function.next]: Passed variable is not an array or object in C:\Program Files\xampp\htdocs\prefeitura\admin\enviar_fotos_cod.php on line 57

Warning: key() [function.key]: Passed variable is not an array or object in C:\Program Files\xampp\htdocs\prefeitura\admin\enviar_fotos_cod.php on line 57

g.zip enviado com sucesso!

segue abaixo o código completo

<?  
include("valida_cookies.php");
include("../include/config_admin.php"); 
include("../include/conexao.php");
$nivel = $HTTP_COOKIE_VARS['nivel'];

?>
<?
$acao = $_POST[acao];
$pasta = $_POST[pasta2];
$foto01 = $_POST[foto01];
$foto02 = $_POST[foto02];
$foto03 = $_POST[foto03];
$foto04 = $_POST[foto04];
$foto05 = $_POST[foto05];
$fotos_zip = $_POST[fotos_zip];


// Nome do diretorio que receberá os arquivos do uplaod. Não se esqueça de dar permissão de escrita a ele 
$sql=mysql_query("select id,pasta from $tb2 where id=$pasta");
$reg=mysql_fetch_array($sql);
        $diretorio    = $reg['pasta'];
        $dir2="../fotos/galerias/$diretorio";
//echo "$dir2<br>";

$uploaddir="$dir2/";
//echo $uploaddir;
?>
<h3><strong>Fotos Enviadas</strong></h3>
<? if($acao == "zip") {?>
  <Table align="center" cellpadding="2" cellspacing="0">

<tr> 
          <td width="14" align="right" valign="middle" bgcolor="#e5e5e5" style="border-bottom:1px solid #cccccc;border-top:1px solid #cccccc"> </td>
          <td width="346" valign="middle" bgcolor="#e5e5e5" style="border-bottom:1px solid #cccccc;border-top:1px solid #cccccc"><?       
// DESCOMPACTA OS ARQUIVOS
$arquivo = $_FILES['fotos_zip']['name']; // pega nome do arquivo 
$arquivotemp = $_FILES['fotos_zip']['tmp_name']; // pega nome temporario do arquivo 
    if(copy($arquivotemp,$uploaddir.$arquivo)){ // faz copia do arquivo zipado
        require_once('zip.lib.php'); //requer o arquivo, deve estar na mesma pasta
        $archive = new PclZip($uploaddir.$arquivo); 
        $list = $archive->extract(PCLZIP_OPT_PATH, "$dir2",PCLZIP_OPT_REMOVE_ALL_PATH); // extrai todos arquivos
//------------------------------------------------
         unlink($uploaddir.$arquivo); // exclui o arquivo zip mandado

                
    
// FIM DO DESCOMPACTA OS ARQUIVOS
//----------------------------------------------
include_once('zip.lib.php');
   
   $zip = new PclZip($arquivotemp);
   
   if (($list = $zip->listContent()) == 0) {    die("Erro : ".$zip->errorInfo(true));  }
   
   for ($i=1; $i<sizeof($list); $i++) {
     for(reset($list[$i]); $key = key($list[$i]); next($list[$i])) {  
            echo $list[$i][$key];
        
    echo "<a><br>'$key'"; 
            
            $tes= $list[$i++][$key];
            $nome= $diretorio."-".$tes;
        $idgal = $reg['id'];
        mysql_query("INSERT INTO $tb3 VALUES ('','$nome','$idgal','$diretorio','$tes')");}
     
   }
}

//---------------------------------------------------    
    
    
           

echo "<a> </a><a> </a><br><strong>$arquivo</strong> enviado com sucesso!";
?>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...