Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Pegar imagens de uma pasta com javascript e exibir em um Slide

Olá! Eu tenho um slide que funciona normalmente. Só que tenho que ficar passando pra ele o link de cada imagem.

O que eu queria fazer é colocar um caminho de uma pasta pra ele identificar os arquivos em png ou jpg e exibi-las automaticamente com javascript.

O Código está assim:

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.0.7/css/swiper.min.css">

  <style>
    html, body {
      position: relative;
      height: 100%;
    }
    body {
      background: #000;
      font-family: Helvetica Neue, Helvetica, Arial, sans-serif;
      font-size: 14px;
      color:#000;
      margin: 0;
      padding: 0;
    }
    .swiper-container {
      width: 100%;
      height: 100%;
    }
    .swiper-slide {
      overflow: hidden;
    }
  </style>
</head>
<body>

  <div class="swiper-container">
    <div class="swiper-wrapper">
      <div class="swiper-slide">
        <div class="swiper-zoom-container">
          <img src="http://lorempixel.com/800/800/sports/1/">
        </div>
      </div>
      <div class="swiper-slide">
        <div class="swiper-zoom-container">
          <img src="http://lorempixel.com/800/400/sports/2/">
        </div>
      </div>
      <div class="swiper-slide">
        <div class="swiper-zoom-container">
          <img src="http://lorempixel.com/400/800/sports/3/">
        </div>
      </div>
    </div>

    <div class="swiper-pagination swiper-pagination-white"></div>

    <div class="swiper-button-prev"></div>
    <div class="swiper-button-next"></div>
  </div>


  <script src="https://cdnjs.cloudflare.com/ajax/libs/Swiper/4.0.7/js/swiper.min.js"></script>


  <script>
    var swiper = new Swiper('.swiper-container', {
      zoom: true,
      pagination: {
        el: '.swiper-pagination',
      },
      navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev',
      },
    });
  </script>
5 respostas

Bom, se eu entendi a sua dúvida, você quer ler uma pasta inteira e pegar todas as imagens dela, correto?

Ou seja: documents/imagems/*.png|.jpg

E disso você iria iterar sobre todas as imagens e criar um slider.

Veja bem, direto do navegador isso não é possível por agora. Em alguns fóruns, como o stack overflow chegou a ser mencionada a questão da segurança do servidor ou usuário ao permitir o navegador fazer isso. Geralmente pra fazermos esse tipo de operação usamos uma linguagem/framework server-side como NodeJS ou Laravel, etc.

Já se falam em métodos para executar tais operações. Um deles é ActiveX or Flash, porém ao executar eles você abre um prompt pro usuário confirmar que você pode ler pastas, caso seja do computador dele e não tem suporte para navegadores além de IE11 e obriga o usuário a ter o flash instalado.

Existe também a opção de usar o webkitdirectory , mas só funciona no Chrome e o suporte é bem ruim.

Javascript lado cliente é uma linguagem totalmente voltada para o browser, ela não pode acessar o fileSystem sem pedir ao usuário. Isso é uma regra.

Para fazer isso, melhor usar NodeJS, caso queira que seja javascript mesmo.

Aqui na alura tem cursos de NodeJS e PHP. (sou fã de NodeJS). Dá uma olhada neles pra ver o que pode fazer

Referencias: https://stackoverflow.com/questions/31274329/get-list-of-filenames-in-folder-with-javascript

https://stackoverflow.com/questions/11332042/is-it-possible-to-read-files-from-a-directory-using-javascript

https://stackoverflow.com/questions/7022058/javascript-read-files-in-folder

Caso eu queira mandar uma api do PHP e puxar com Json como eu faria? Pois eu sei criar um select prar puxar do banco, mas assim de pasta n sei como fazer.

solução!

PHP realmente não é meu forte. Eu sou bom com node, mas tem um comando que eu usei recentemente de uma questão no StackOverflow e funcionou pra mim

$types = array( 'png', 'jpg', 'jpeg', 'gif' ); if ( $handle = opendir('pasta_desejada') ) { while ( $entry = readdir( $handle ) ) { $ext = strtolower( pathinfo( $entry, PATHINFO_EXTENSION) ); if( in_array( $ext, $types ) ) echo $entry; } closedir($handle); }

Como não consigo te ajudar com o PHP, eu sugiro abrir um offtopic pra alguém te ajudar com esse comando.

Caso tenha curiosidade, separei algumas respostas aqui pra você

https://pt.stackoverflow.com/questions/108662/listar-arquivos-de-uma-pasta-diret%C3%B3rio-em-php

https://www.w3schools.com/php/func_directory_scandir.asp

Vlw. Obrigado! Já ajudou mt!

Disponha, meu caro!