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

(Resolvido) Download De Imagens Em Lote


Jetro

Pergunta

Olá amigos

Preciso de um sistema que Baixe diversas imagens do provedor sem ter que ficar indicando onde cada uma delas deverá ser salva. Cada lote de imagem tem um nome tipo "album de fotos".

O endereço de download pode ser fixo, uma vez que sempre utilizarei no mesmo computador, esse sistema.

alguém poderia me dar uma dica?

Att

Jetro Bernardo

Link para o comentário
Compartilhar em outros sites

25 respostass a esta questão

Posts Recomendados

  • 0

Ola amigo

Obrigado pela dica.

Vamos lá... Me fele mais sobre esse cuteftp ..... nunca ouvi falar...

Olha. A senha eu sempre a terei.

Estou desenvolvendo um Sistema para um Laboratorio fotografico que ira receber as imagens digitais enviadas pelo site e depois, terá que baixar para às revelar em papel. Entendeu?

Já fiz todo o sistema de Upload... www.colortang.com.br mas na hora do download em lote, travei.

Veja aí

Link para o comentário
Compartilhar em outros sites

  • 0

Se a sua idéia é clica em algum lugar e vem todas as fotos de uma vez, a maneira mais simples é, cada envio para o servidor ficar em uma pasta, ai você armazena essa pasta no BD, assim quando o cara clicar no lugar lá pra baixar tudo coloca o conteúdo da pasta em um zip e força o download... existem várias classes para zipar toda a pasta no phpclasses...

Link para o comentário
Compartilhar em outros sites

  • 0
Se a sua idéia é clica em algum lugar e vem todas as fotos de uma vez, a maneira mais simples é, cada envio para o servidor ficar em uma pasta, ai você armazena essa pasta no BD, assim quando o cara clicar no lugar lá pra baixar tudo coloca o conteúdo da pasta em um zip e força o download... existem várias classes para zipar toda a pasta no phpclasses...

Valeu Serra....

Ótima dica...

Agora irei pesquisar como "Crio pastas" pelo PHP

êta caminhada dura... rs rs rs

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0
mkdir ("pasta", 0777);

:}

permissão não foi setada (?)

já acertei.

Agora, quando mando baixar o Diretorio aparece o seguinte erro:

Forbidden

You don't have permission to access /fotos/uuu182313/ on this server.

veja em http://www.colortang.com.br/teste.php

:blink:

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

  • 0
Guest --visitante --

...e ai ESserra?

Beleza?

Amigo! Ainda estou aqui tomando uma surra desse trem...!

Como é que eu faço para Zipar uma pasta com tudo dentro?

Tentei umas classes porai mas deu pau em tudo...!

Valeu

Link para o comentário
Compartilhar em outros sites

  • 0
Leias as regras do fórum... você já tem um tópico que discute o assunto, logo, não precisa abrir outro...

Tópico fundidos...

Ola ESerra

Aconteceu que ficou sem resposta por um tempo e eu pensei que seria por se tratar de outro assunto, pois o anterior era acessar a Pasta.. etc... então por ser outro assunto, resolvi colocar em outro tópico.

Mas desculpe se causei algum embaraço.

Att

Jetro

Link para o comentário
Compartilhar em outros sites

  • 0

Geralmente a limitação da não é da linguagem, e sim do programador que a não conhece de forma profunda o suficiente...

Ontem eu criei uma função para um cliente que faz exatamente isso, só que como ele me pagou para fazer isso eu não vou distribuir na faixa (já que isso seria no mínimo uma atitude anti-ética para com ele)...

Mas para não dizer que eu não ajudei... simplesmente digita "zipar pasta php" (sem as aspas) no google, nas três primeiras páginas você acha várias maneiras pra fazer exatamente isso que quer...

Link para o comentário
Compartilhar em outros sites

  • 0
Geralmente a limitação da não é da linguagem, e sim do programador que a não conhece de forma profunda o suficiente...

Ontem eu criei uma função para um cliente que faz exatamente isso, só que como ele me pagou para fazer isso eu não vou distribuir na faixa (já que isso seria no mínimo uma atitude anti-ética para com ele)...

Mas para não dizer que eu não ajudei... simplesmente digita "zipar pasta php" (sem as aspas) no google, nas três primeiras páginas você acha várias maneiras pra fazer exatamente isso que quer...

Não longe... Fala para mim: QUanto você me cobra pra fazer o ZIP funcionar no meu cliente?

A primeira coisa que fiz foi procurar no Google exatamente o que você sugeriu.

Mas sou novo no PHP. Isso sem duvidas, gera complicações para mim.

Desiste de ZIpar enquanto estudo mais um pouco a respeito.

Resolvi baixar sem Zipar pelo FTP mas eu fico doido quando não acontece "NADA" é pior que o Erro.

Fiz o Script abaixo

?> 
// Cria a conexão
$ftp_server="ftp.colortang.com.br";
$conn_id = ftp_connect($ftp_server);

// login com o nome de usuário e senha
$login_result = ftp_login($conn_id, "gggggg", "123456");

// confere a conexão
if ((!$conn_id) || (!$login_result)) {
        echo "A conexão FTP falhou!";
        echo "Tentou conectar ao servidor $ftp_server para o usuário $ftp_user_name";
        exit;
    } else {
        echo "Conectado ao servidor $ftp_server";
    }


// Download do arquivo
$faz = ftp_get($conn_id, "c:", "fotos/ZIPANDO133746/1133746h.jpg", FTP_ASCII );

if ($faz == FTP_FINISHED) {
   echo "<BR> download  OK";
   exit;
}

ftp_close($conn_id);
?>

Já fiz de tudo mudei a forma de endereço etc.

Veja no link http://www.colortang.com.br/teste.php

Valeu mesmo! <_<

Editado por ESerra
Utilize as tags [code] [/code]
Link para o comentário
Compartilhar em outros sites

  • 0

O que você não entendeu é o seguinte... o erro:

Warning: ftp_get(c:) [function.ftp-get]: failed to open stream: Permission denied in /home/colortang/www/teste.php on line 22

Warning: ftp_get() [function.ftp-get]: Error opening c: in /home/colortang/www/teste.php on line 22

É causado pois 'string $local_file' diz respeito ao computador que estiver rodando o script, no caso, é o servidor E NÃO o computador que fizer a requisição pelo navegador... se você quiser gravar tudo no C: vai ter que instalar o PHP no computador e ai sim rodar o script...

Link para o comentário
Compartilhar em outros sites

  • 0
... se você quiser gravar tudo no C: vai ter que instalar o PHP no computador e ai sim rodar o script...

Caraca! Que chato! então quer dizer que eu devo uzar ftp_put ao invés de ftp_get ?

Irei tentar.

Valeu Serra <_<

Acabei de tentar.

Estou usando assim:

// A CONEXÃO ESTÁ OK...

$upload = ftp_put($conn_id, "Desktop", "fotos/ZIPANDO133746/tang1.jpg", FTP_ASCII );

if ($upload == FTP_FINISHED) {

echo "<BR> download OK !!!";

exit;

}

Acontece que aparentemente tudo funciona, mas o arquivo não aparece em lugar nenhum do meu HD.

:unsure:

http://www.colortang.com.br/teste.php

Estou tentando,

nalguma luz, por fvr me ajude.

Grato

Jetro

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

  • 0

Em primeiro lugar vamos ver o que o manual diz:

"ftp_put — Envia um arquivo para o servidor FTP"

Então se o o ftp_put ENVIA um arquivo para o servidor como vai aparecer alguma coisa no seu HD? Já que você quer exatamente o contrário que é baixar o arquivo do servidor???

Utilize o ftp_get, MAS como eu disse, você vai ter que instalar o PHP no computador que vai baixar os arquivos e lá rodar o script, ai você passa o endereço físico do HD (Desktop não é endereço físico), e ai sim vai conseguir pegar o arquivo. A sua lógica está errada porque, imagina se fosse possível executar um comando no servidor que sem o usuário saber enviasse um arquivo para uma pasta quando no HD, ai junta isso com um JS para executar o que foi baixado, pronto, estaria formado o caos...

Link para o comentário
Compartilhar em outros sites

  • 0

Beleza ESerra

Finalmente consegui.

Desta vez o ScriptBrasil não conseguiu me ajudar a resolver meu problema.

Mas em muito o honro porque até hoje quase tudo que aprendi foi a partir daqui.

Já faço parte desse time e por isso, vou disponibilizar aqui, o Script que funcina.

Irei colocar o Básico, do jeito que eu queria ter encontrado.

Basta copiar esses dois Scripts para dentro da pasta que deseja Compactar/Zipar e executar o jetro.php.

Você pode especificar a pasta que deseja compactar inserindo no jetro.php a variável $dir e populando-a com o nome da pasta desejada.

//------------------------------------- jetro.php

<?php
require_once('zip.class.php');
$s = new PHPZip();
$zipfilename = array("nome1.jpg","nome2.jpg"); // Neste exemplo compactarei duas fotos. 
$s->Zip($zipfilename, "nome_arquivo_zipado.zip"); 
echo "Concluido";
?>
//------------------------------------- zip.class.php
<?php
class PHPZip
{
   function Zip($dir, $zipfilename)
   {
       if (@function_exists('gzcompress'))
      {   
         $curdir = getcwd();
         if (is_array($dir)) 
         {
               $filelist = $dir;
         }
         else 
         {
            $filelist = $this -> GetFileList($dir);
         }
         
         if ((!empty($dir))&&(!is_array($dir))&&(file_exists($dir))) chdir($dir);
         else chdir($curdir);

         if (count($filelist)>0)
         {
            foreach($filelist as $filename)
            {
               if (is_file($filename))
               {
                  $fd = fopen ($filename, "r");
                  $content = fread ($fd, filesize ($filename));
                  fclose ($fd);

                  if (is_array($dir)) $filename = basename($filename);
                  $this -> addFile($content, $filename);
               }
            }
            $out = $this -> file();

            chdir($curdir);
            $fp = fopen($zipfilename, "w");
            fwrite($fp, $out, strlen($out));
            fclose($fp);
         }
         return 1;
      } 
      else return 0;
   }

   function GetFileList($dir)
   {
      if (file_exists($dir))
      {
         $args = func_get_args();
         $pref = $args[1];
      
         $dh = opendir($dir);
         while($files = readdir($dh))
         {
            if (($files!=".")&&($files!="..")) 
            {
               if (is_dir($files)) 
               {
                  $curdir = getcwd();
                  chdir($files);
                  $file = array_merge($file, $this -> GetFileList("", "$pref$files/"));
                  chdir($curdir);
               }
               else $file[]=$pref.$files;
            }
         }
         closedir($dh);
      }
      return $file;
   }

    var $datasec      = array();
    var $ctrl_dir     = array();
    var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00";
    var $old_offset   = 0;

    function unix2DosTime($unixtime = 0) {
        $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);

        if ($timearray['year'] < 1980) {
           $timearray['year']    = 1980;
           $timearray['mon']     = 1;
           $timearray['mday']    = 1;
           $timearray['hours']   = 0;
           $timearray['minutes'] = 0;
           $timearray['seconds'] = 0;
        }

        return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) |
                ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1);
    } 

    function addFile($data, $name, $time = 0)
    {
        $name     = str_replace('\\', '/', $name);

        $dtime    = dechex($this->unix2DosTime($time));
        $hexdtime = '\x' . $dtime[6] . $dtime[7]
                  . '\x' . $dtime[4] . $dtime[5]
                  . '\x' . $dtime[2] . $dtime[3]
                  . '\x' . $dtime[0] . $dtime[1];
        eval('$hexdtime = "' . $hexdtime . '";');

        $fr   = "\x50\x4b\x03\x04";
        $fr   .= "\x14\x00";           
        $fr   .= "\x00\x00";         
        $fr   .= "\x08\x00";        
        $fr   .= $hexdtime;           

        $unc_len = strlen($data);
        $crc     = crc32($data);
        $zdata   = gzcompress($data);
        $zdata   = substr(substr($zdata, 0, strlen($zdata) - 4), 2); 
        $c_len   = strlen($zdata);
        $fr      .= pack('V', $crc);         
        $fr      .= pack('V', $c_len);          
        $fr      .= pack('V', $unc_len);        
        $fr      .= pack('v', strlen($name));   
        $fr      .= pack('v', 0);               
        $fr      .= $name;

        $fr .= $zdata;

        $fr .= pack('V', $crc);                
        $fr .= pack('V', $c_len);             
        $fr .= pack('V', $unc_len);          
  
        $this -> datasec[] = $fr;
        $new_offset        = strlen(implode('', $this->datasec));
   
        $cdrec = "\x50\x4b\x01\x02";
        $cdrec .= "\x00\x00";               
        $cdrec .= "\x14\x00";         
        $cdrec .= "\x00\x00";            
        $cdrec .= "\x08\x00";         
        $cdrec .= $hexdtime;           
        $cdrec .= pack('V', $crc);       
        $cdrec .= pack('V', $c_len);         
        $cdrec .= pack('V', $unc_len);      
        $cdrec .= pack('v', strlen($name) );
        $cdrec .= pack('v', 0 );            
        $cdrec .= pack('v', 0 );            
        $cdrec .= pack('v', 0 );           
        $cdrec .= pack('v', 0 );           
        $cdrec .= pack('V', 32 );          
        $cdrec .= pack('V', $this -> old_offset ); 
        $this -> old_offset = $new_offset;
        $cdrec .= $name;
        $this -> ctrl_dir[] = $cdrec;
    } 
    function file()
    {
        $data    = implode('', $this -> datasec);
        $ctrldir = implode('', $this -> ctrl_dir);
        return
            $data .
            $ctrldir .
            $this -> eof_ctrl_dir .
            pack('v', sizeof($this -> ctrl_dir)) .  
            pack('v', sizeof($this -> ctrl_dir)) .  
            pack('V', strlen($ctrldir)) .          
            pack('V', strlen($data)) .             
            "\x00\x00";                            
    } 
} 
?>

Espero ter ajudado.

fui

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,3k
    • Posts
      652k
×
×
  • Criar Novo...