Jump to content


Photo

Subpastas De Arquivos Compactados


  • Faça o login para participar
4 replies to this topic

#1 Max William

Max William

    12 Horas

  • Usuários
  • 192 posts
  • Sexo:Masculino
  • Localidade:Maringá - Paraná

Posted 26/02/2010, 15:03

Olá,

To com outro probleminha que eu não pensei, erro de planejamento ¬¬'

Eu fiz todo sistema de upload de arquivos Zip, onde eu vou pegar nome dos arquivos que foram enviados e gravar no banco. (consequentemente mover o compactado para pasta definida)
Porem eu não pensei na seguinte situação, se arquivo compactado tive-se subpastas, eu fiz o sistema pensando que usuario selecionaria foto1.jpg e foto2.jpg e dentro do meu processo ele me retornaria em array [0] foto1 e [1] foto2.

Porém, se vc compactar uma pasta com os arquivos dentro o array 0 sera o nome da pasta, e isso ja fode com tudo o que eu fiz, e na pior das hipoteses o cara pode ter compactado com mais subpastas.. eu preciso remover estas pastas para restar somente o nome dos arquivos.

Pensei na seguinte solução. (que tb tem grandes chance de dar problema)

Gambiarra 1

Suponto que o usuario compactou/enviou uma pasta chamada fotos com 3 arquivos, meu array retornaria assim
array(4)
{
    [0]=>  string(6) "fotos/"
    [1]=>  string(15) "fotos/foto1.jpg"
    [2]=>  string(15) "fotos/foto2.jpg"
    [3]=>  string(15) "fotos/foto3.jpg"
}

Eu iria fazer uma verificação na posição 1 para ver se existe um nome contendo uma barra. se existir eu pego este nome e removo ele dos demais array retornando o nome dos arquivos.
array(3)
{
    [0]=>  string(9) "foto1.jpg"
    [1]=>  string(9) "foto2.jpg"
    [3]=>  string(9) "foto3.jpg"
}

Porém existe outra situação, se existir subpastas, meu array retornaria desta forma:
array(7)
{
    [0]=>  string(6) "fotos/"
    [1]=>  string(15) "fotos/foto1.jpg"
    [2]=>  string(15) "fotos/foto2.jpg"
    [3]=>  string(15) "fotos/foto3.jpg"
    [4]=>  string(15) "fotos/subpasta/"
    [5]=>  string(24) "fotos/subpasta/foto1.jpg"
    [6]=>  string(24) "fotos/subpasta/foto2.jpg"
}

Neste caso eu pensei em fazer o mesmo procedimento que faria acima, so que eu teria que fazer 2x este array para restar somente o nome dos arquivos. o que não seria interessante visando desempenho e processo no servidor.


Se eu fizer o processo de remover o nome do primeiro array de todos os outros array ficaria assim
array(6)
{
     [0]=>  string(9) "foto1.jpg"
     [1]=>  string(9) "foto2.jpg"
     [2]=>  string(9) "foto3.jpg"
     [3]=>  string(9) "subpasta/"
     [4]=>  string(18) "subpasta/foto1.jpg"
     [5]=>  string(18) "subpasta/foto2.jpg"
}
Porém, não é o que eu to querendo, porque ainda vai resta nome das subpastas como podem ver na posição 3 preciso remover este nome tb

Resultado final precisaria que fosse assim.
array(5)
{
     [0]=>  string(15) "foto1.jpg"
     [1]=>  string(15) "foto2.jpg"
     [2]=>  string(15) "foto3.jpg"
     [3]=>  string(24) "subpasta/foto1.jpg"
     [4]=>  string(24) "subpasta/foto2.jpg"
}


Lembrando que eu não sei qual nome do arquivo que usuario vai enviar, nem quantidade de fotos e muito menos a quantidade de subpastas.
Como eu poderia resolver este problema?
Se eu lhe ajudei ;) Clique para agradecer!

#2 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 26/02/2010, 16:30

Então, estava pensando: pq ele iria compactar jpg's?
já que o tamanho não reduz, só pode ser pela facilidade de enviar grande quantidade de arquivos..

Eu sei que isso não é a resposta do seu tópico, mas acho q esse plugin do jQuery pode te ajudar
SWFUpload

Sim, ele usa um flash para fazer upload.
A vantagem é que o usuário pode selecionar vários arquivos (assim como o gmail ou orkut)
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#3 Max William

Max William

    12 Horas

  • Usuários
  • 192 posts
  • Sexo:Masculino
  • Localidade:Maringá - Paraná

Posted 26/02/2010, 17:18

@Falci,

Você esta correto, fato de estar compactado não é visando tamanho (mesmo pq sabemos que não a redução) e sim pela facilidade de vc estar enviando 1 arquivo contendo 5/10/20 fotos e não fazendo upload de varios arquivos.

Infelizmente sua dica não me ajuda, eu sou do tipo 'anti-flash', se for flex a coisa muda ;)

Mas eu consegui resolver o problema de forma muito simples, era so eu ler com mais atenção a documentação.

estou usando a função nativa do php para ler arquivos .zip
http://www.php.net/m...BR/book.zip.php

e relendo e testando novamente eu pude perceber que existe a função zip_entry_compressionmethod que retornaria o metodo usado, no caso de pasta ele retorna stored e partir dai eu pude de forma muito simples separar arquivos de pastas.

Caso resolvido!

Edição feita por: Max William, 26/02/2010, 17:26.

Se eu lhe ajudei ;) Clique para agradecer!

#4 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 26/02/2010, 23:12

É aquilo que eu falo... Quem lê o manual, não passa mal. :assobio:

[]’s :P Até mais

#5 Willian Gustavo Veiga

Willian Gustavo Veiga

    12 Horas

  • Usuários
  • 175 posts
  • Sexo:Masculino

Posted 27/02/2010, 22:20

É aquilo que eu falo... Quem lê o manual, não passa mal. :assobio:

[]’s :P


AUDHAUHDAUHHUHDuHDUHUDHUAHDUHADHUAHDUHUHUDHAHDHUAUDH
Passei mal :D
Posted Image




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq