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?