Cómo cargar todas las imágenes de una de mis carpetas en mi página web, usando Jquery/Javascript

Resuelto rishy asked hace 11 años • 0 respuestas

Tengo una carpeta llamada "imágenes" en el mismo directorio que mi archivo .js. Quiero cargar todas las imágenes de la carpeta "imágenes" en mi página html usando Jquery/Javascript.

Dado que los nombres de las imágenes no son números enteros sucesivos, ¿cómo se supone que debo cargar estas imágenes?

rishy avatar Aug 28 '13 13:08 rishy
Aceptado

Funciona tanto en localhost como en servidor en vivo sin problemas y le permite ampliar la lista delimitada de extensiones de archivos permitidas:

var folder = "images/";

$.ajax({
    url : folder,
    success: function (data) {
        $(data).find("a").attr("href", function (i, val) {
            if( val.match(/\.(jpe?g|png|gif)$/) ) { 
                $("body").append( "<img src='"+ folder + val +"'>" );
            } 
        });
    }
});

AVISO

El servidor ApacheOption Indexes está activado de forma predeterminada; si usa otro servidor como, por ejemplo, Express para Node , puede usar este paquete NPM para que funcione lo anterior: https://github.com/expressjs/serve-index

Si los archivos que desea que aparezcan en la lista se encuentran /imagesdentro de su server.js, puede agregar algo como:

const express = require('express');
const app = express();
const path = require('path');

// Allow assets directory listings
const serveIndex = require('serve-index'); 
app.use('/images', serveIndex(path.join(__dirname, '/images')));
Roko C. Buljan avatar Oct 05 '2015 02:10 Roko C. Buljan

Usar :

var dir = "Src/themes/base/images/";
var fileextension = ".png";
$.ajax({
    //This will retrieve the contents of the folder if the folder is configured as 'browsable'
    url: dir,
    success: function (data) {
        //List all .png file names in the page
        $(data).find("a:contains(" + fileextension + ")").each(function () {
            var filename = this.href.replace(window.location.host, "").replace("http://", "");
            $("body").append("<img src='" + dir + filename + "'>");
        });
    }
});

Si tiene otras extensiones, puede convertirla en una matriz y luego revisarla una por una usando in_array().

Ps: el código fuente anterior no está probado.

Roy M J avatar Aug 28 '2013 06:08 Roy M J

Esta es la forma de agregar más extensiones de archivo, en el ejemplo dado por Roy MJ en la parte superior de esta página.

var fileextension = [".png", ".jpg"];
$(data).find("a:contains(" + (fileextension[0]) + "), a:contains(" + (fileextension[1]) + ")").each(function () { // here comes the rest of the function made by Roy M J   

En este ejemplo he agregado más contenidos.

Bart Hoekstra avatar May 24 '2014 12:05 Bart Hoekstra

Si está interesado en hacer esto sin jQuery, aquí hay una variante JS pura ( desde aquí ) de la respuesta actualmente más votada:

var xhr = new XMLHttpRequest();
xhr.open("GET", "/img", true);
xhr.responseType = 'document';
xhr.onload = () => {
  if (xhr.status === 200) {
    var elements = xhr.response.getElementsByTagName("a");
    for (x of elements) {
      if ( x.href.match(/\.(jpe?g|png|gif)$/) ) { 
          let img = document.createElement("img");
          img.src = x.href;
          document.body.appendChild(img);
      } 
    };
  } 
  else {
    alert('Request failed. Returned status of ' + xhr.status);
  }
}
xhr.send()
Rainman avatar Mar 20 '2019 22:03 Rainman

Aquí tienes una forma de hacerlo. También implica hacer un poco de PHP.

La parte de PHP:

$filenameArray = [];

$handle = opendir(dirname(realpath(__FILE__)).'/images/');
        while($file = readdir($handle)){
            if($file !== '.' && $file !== '..'){
                array_push($filenameArray, "images/$file");
            }
        }

echo json_encode($filenameArray);

La parte de jQuery:

$.ajax({
            url: "getImages.php",
            dataType: "json",
            success: function (data) {

                $.each(data, function(i,filename) {
                    $('#imageDiv').prepend('<img src="'+ filename +'"><br>');
                });
            }
        });

Básicamente, crea un archivo PHP para devolverle la lista de nombres de archivos de imágenes como JSON, toma ese JSON usando una llamada ajax y lo antepone/añade al html. Probablemente quieras filtrar los archivos que tomas de la carpeta.

Tuve ayuda en la parte php de 1

Pnar Sbi Wer avatar Mar 15 '2014 06:03 Pnar Sbi Wer