Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: gAb1 en 22 Diciembre 2015, 19:13 pm



Título: previsualizar imagenes subidas con jquery plugin ezdz
Publicado por: gAb1 en 22 Diciembre 2015, 19:13 pm
Hola que tal! Necesito crear un formulario que previsualice las imagenes subidas usando el plugin ezdz. El problema es que tengo varios file inputs y tengo que hacerle un loop a "preview" para pasarle la dirección de cada imagen y que muestre cada una en un file input.

Código
  1. $('input[type="file"]').ezdz({
  2.    text: 'Arrastrar imagen',
  3.    preview:'url/or/path/to/image.jpg',
  4. });

Para un solo file input serviria así, pero tengo varios y cada uno debe tener una imagen.

He creado un script php que recoge la información de las imagenes (nombre, tamaño, etc) del directorio donde están y codifica los datos en json. Con ajax recojo la info para guardarla en un objeto javascript. A partir de aquí es donde tengo dudas, porque no sé como hacerle un loop a "preview".

Este es el script del ezdz.preview (https://github.com/jaysalvat/ezdz/blob/master/src/jquery.ezdz.js#L302):

Código
  1. // Inject a file or image in the preview
  2. $.ezdz.prototype.preview = function(path, callback) {
  3.    var settings  = this.settings,
  4.        $input    = this.$input,
  5.        $ezdz     = $input.parent('.' + settings.classes.main),
  6.        basename  = path.replace(/\\/g,'/').replace( /.*\//, ''),
  7.        formatted = settings.format(basename);
  8.  
  9.    var img = new Image();
  10.    img.src = path;
  11.  
  12.    // Is an image
  13.    img.onload = function() {
  14.        $ezdz.find('div').html($(img).fadeIn());
  15.  
  16.        if ($.isFunction(callback)) {
  17.             callback.apply(this);
  18.        }
  19.    };
  20.  
  21.    // Is not an image
  22.    img.onerror = function() {
  23.        $ezdz.find('div').html('<span>' + formatted + '</span>');
  24.  
  25.        if ($.isFunction(callback)) {
  26.             callback.apply(this);
  27.        }
  28.    };
  29.  
  30.    $ezdz.addClass(settings.classes.accept);
  31. };

Gracias!


Título: Re: previsualizar imagenes subidas con jquery plugin ezdz
Publicado por: gAb1 en 5 Enero 2016, 04:11 am
Al final encontré tiempo para seguir trabajando en esto. Dejo la solución para el que esté interesado:

Al parecer el plugin ya trae un método para crear un preview a partir de una imagen.

Con esto se inicializa el plugin en todos los file inputs:

Código
  1. $('input[type="file"]').ezdz({text: 'Arrastrar imagen'});

Para previsualizar las imagenes, normalmente es otro formulario (uno para subirlas y otro para quitar y añadir), facilmente se comprueba usando javascript:

Código
  1. if (window.location.pathname == '/url')
  2. // o si la url es la misma y lo que cambia es el get
  3. // habrá que crear una función pasandole el nombre del get
  4. if (getUrlParameter('option') == 'img')
Código
  1. var to = 'to/',
  2.    image = 'image.jpg';
  3. $('input[type="file"]').each(function(i) {  // i is the index, if needed.
  4.    $(this).ezdz('preview', 'http://www.website.com/path/' + to + image);
  5. });
Si solo teneis 1 input quitar el each().