McAnam » Foros » Foro PHP
Subir varias imagenes com adjuntar los archivos en gmail



  Alan Culvi        30/12/2011 20:58:10
Tengo que hacer una pagina web para mi tio i necesito subir varias imágenes a la vez, el problema es que no se sabe cuantas.

He seguido este ejemplo http://www.mcanam.com/articulos/PHP.php?id=15 i con javascript consigo que me salgan mas input file i que suban al servidor las imágenes pero lo que yo quiero es subirlas en un directorio en concreto.

El script es este.

<script type="text/javascript">
var numero = 0;

// Funciones comunes
c= function (tag) { // Crea un elemento
   return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
   return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
   return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
   return evt.srcElement ?  evt.srcElement : evt.target;
}

addField = function () {
   container = d('files');
  
   span = c('SPAN');
   span.className = 'file';
   span.id = 'file' + (++numero);

   field = c('INPUT');  
   field.name = 'archivos[]';
   field.type = 'file';
  
   a = c('A');
   a.name = span.id;
   a.href = '#';
   a.onclick = removeField;
   a.innerHTML = 'Quitar';

   span.appendChild(field);
   span.appendChild(a);
   container.appendChild(span);
}
removeField = function (evt) {
   lnk = f(e(evt));
   span = d(lnk.name);
   span.parentNode.removeChild(span);
}
</script>

El codigo HTML del formulario es este
<a href="#" onclick="addField()" accesskey="5">Afegir foto:</a></dt>
       <div id="files"></div>



  Alan Culvi        30/12/2011 21:05:59
El problema lo tenia en el nombre que assignava el script.
var numero = 0;

// Funciones comunes
c= function (tag) { // Crea un elemento
   return document.createElement(tag);
}
d = function (id) { // Retorna un elemento en base al id
   return document.getElementById(id);
}
e = function (evt) { // Retorna el evento
   return (!evt) ? event : evt;
}
f = function (evt) { // Retorna el objeto que genera el evento
   return evt.srcElement ?  evt.srcElement : evt.target;
}

addField = function () {
   container = d('files');
  
   span = c('SPAN');
   span.className = 'file';
   //span.id = 'file' + (++numero);
   span.id = (++numero);

   field = c('INPUT');  
   //field.name = 'archivos[]';
   field.name = 'archivos'+ (++numero);
   field.type = 'file';
  
   a = c('A');
   a.name = span.id;
   a.href = '#';
   a.onclick = removeField;
   a.innerHTML = 'Elimina';

   span.appendChild(field);
   span.appendChild(a);
   container.appendChild(span);
}
removeField = function (evt) {
   lnk = f(e(evt));
   span = d(lnk.name);
   span.parentNode.removeChild(span);
}
</script>

Bendita iluminación.


  McAnam        05/01/2012 15:08:26
Buenas,

Sólo un detalle, tal como está creo que te crearía algo como:

archivo2
archivo4
archivo6
....

Si es así prueba reemplazando:
// field.name = 'archivos'+ (++numero);
field.name = 'archivos'+ numero;


Volver al foro PHP