Foros del Web » Programando para Internet » PHP »

Archivos multiples

Estas en el tema de Archivos multiples en el foro de PHP en Foros del Web. necesito subir archivos multiples. para el formulario use java script ahora como haria para cargar las imagenes desde el siguiente arreglo enviado de mi formulario ...
  #1 (permalink)  
Antiguo 29/01/2009, 10:22
Avatar de jmillan  
Fecha de Ingreso: julio-2008
Mensajes: 60
Antigüedad: 16 años, 4 meses
Puntos: 0
Archivos multiples

necesito subir archivos multiples. para el formulario use java script

ahora

como haria para cargar las imagenes desde el siguiente arreglo enviado de mi formulario para archivos multiples





Código PHP:
<pre><?  print_r($_FILES); ?></pre>
Array
(
[file_2] => Array
(
[name] =>
[type] =>
[tmp_name] =>
[error] => 4
[size] => 0
)

[file_1] => Array
(
[name] => DSCN0049.JPG
[type] => image/jpeg
[tmp_name] => /tmp/phpM5fGhY
[error] => 0
[size] => 1628004
)

[file_0] => Array
(
[name] => DSCN0044.JPG
[type] => image/jpeg
[tmp_name] => /tmp/phpmk3uuU
[error] => 0
[size] => 1852947
)

)
  #2 (permalink)  
Antiguo 29/01/2009, 10:30
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Archivos multiples

Es mas facil usar identificadores del tipo array, pero solo bastaria con algo como:
Código PHP:
<?php
for($i 0$i count($_FILES); $i++) {
  
$archivo $_FILES["file_$i"]
  
//move_uploaded_file($archivo['tmp_name'], $archivo['name']);
}
?>
  #3 (permalink)  
Antiguo 29/01/2009, 10:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Archivos multiples

Código php:
Ver original
  1. foreach($_FILES as $photo => $photo_data) {
  2.       move_uploaded_file( $photo_data['tmp_name'], "/a/algun/lugar/" . $photo_data['name'] );
  3. }

Saludos.
  #4 (permalink)  
Antiguo 30/01/2009, 08:30
Avatar de jmillan  
Fecha de Ingreso: julio-2008
Mensajes: 60
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Archivos multiples

aveces no me carga alguna imagen por que da error, ejemplo el [file_3] y el 4 no es ninguna imagen, habra alguna forma de validar lo que se esta ingresando ?

Array
(
[file_4] => Array
(
[name] =>
[type] =>
[tmp_name] =>
[error] => 4
[size] => 0
)

[file_3] => Array
(
[name] => DSCN0111.JPG
[type] =>
[tmp_name] =>
[error] => 1
[size] => 0
)

[file_2] => Array
(
[name] => DSCN0088.JPG
[type] => image/jpeg
[tmp_name] => /tmp/phpLm1K7J
[error] => 0
[size] => 1499580
)

[file_1] => Array
(
[name] => DSCN0050.JPG
[type] => image/jpeg
[tmp_name] => /tmp/php4RilOf
[error] => 0
[size] => 1971298
)

[file_0] => Array
(
[name] => DSCN0043.JPG
[type] => image/jpeg
[tmp_name] => /tmp/phpxC1abO
[error] => 0
[size] => 1624498
)

)
  #5 (permalink)  
Antiguo 30/01/2009, 08:49
Avatar de jmillan  
Fecha de Ingreso: julio-2008
Mensajes: 60
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Archivos multiples

Aqui estan el resto de mi sarchivos :

scrip.php

Código HTML:
<html>

<head>
	<script src="multifile_compressed.js"></script>
</head>

<body>

<form enctype="multipart/form-data" action="subir.php" method = "post">
	<input id="my_file_element" type="file" name="file_1" >
	<input type="submit">
</form>

Imagenes:

<div id="files_list"></div>
<script>
	var multi_selector = new MultiSelector( document.getElementById( 'files_list' ), 10 );
	multi_selector.addElement( document.getElementById( 'my_file_element' ) );
</script>
</body>
</html> 
multifile_compressed.js

function MultiSelector( list_target, max ){this.list_target = list_target;this.count = 0;this.id = 0;if( max ){this.max = max;} else {this.max = -1;};this.addElement = function( element ){if( element.tagName == 'INPUT' && element.type == 'file' ){element.name = 'file_' + this.id++;element.multi_selector = this;element.onchange = function(){var new_element = document.createElement( 'input' );new_element.type = 'file';this.parentNode.insertBefore( new_element, this );this.multi_selector.addElement( new_element );this.multi_selector.addListRow( this );this.style.position = 'absolute';this.style.left = '-1000px';};if( this.max != -1 && this.count >= this.max ){element.disabled = true;};this.count++;this.current_element = element;} else {alert( 'Error: not a file input element' );};};this.addListRow = function( element ){var new_row = document.createElement( 'div' );var new_row_button = document.createElement( 'input' );new_row_button.type = 'button';new_row_button.value = 'Delete';new_row.element = element;new_row_button.onclick= function(){this.parentNode.element.parentNode.remo veChild( this.parentNode.element );this.parentNode.parentNode.removeChild( this.parentNode );this.parentNode.element.multi_selector.count--;this.parentNode.element.multi_selector.current_el ement.disabled = false;return false;};new_row.innerHTML = element.value;new_row.appendChild( new_row_button );this.list_target.appendChild( new_row );};};


multifile.js

this.addElement = function( element ){

// Make sure it's a file input element
if( element.tagName == 'INPUT' && element.type == 'file' ){

// Element name -- what number am I?
element.name = 'file_' + this.id++;

// Add reference to this object
element.multi_selector = this;

// What to do when a file is selected
element.onchange = function(){

// New file input
var new_element = document.createElement( 'input' );
new_element.type = 'file';

// Add new element
this.parentNode.insertBefore( new_element, this );

// Apply 'update' to element
this.multi_selector.addElement( new_element );

// Update list
this.multi_selector.addListRow( this );

// Hide this: we can't use display:none because Safari doesn't like it
this.style.position = 'absolute';
this.style.left = '-1000px';

};
// If we've reached maximum number, disable input element
if( this.max != -1 && this.count >= this.max ){
element.disabled = true;
};

// File element counter
this.count++;
// Most recent element
this.current_element = element;

} else {
// This can only be applied to file input elements!
alert( 'Error: not a file input element' );
};

};

/**
* Add a new row to the list of files
*/
this.addListRow = function( element ){

// Row div
var new_row = document.createElement( 'div' );

// Delete button
var new_row_button = document.createElement( 'input' );
new_row_button.type = 'button';
new_row_button.value = 'Delete';

// References
new_row.element = element;

// Delete function
new_row_button.onclick= function(){

// Remove element from form
this.parentNode.element.parentNode.removeChild( this.parentNode.element );

// Remove this row from the list
this.parentNode.parentNode.removeChild( this.parentNode );

// Decrement counter
this.parentNode.element.multi_selector.count--;

// Re-enable input element (if it's disabled)
this.parentNode.element.multi_selector.current_ele ment.disabled = false;

// Appease Safari
// without it Safari wants to reload the browser window
// which nixes your already queued uploads
return false;
};

// Set row value
new_row.innerHTML = element.value;

// Add button
new_row.appendChild( new_row_button );

// Add it to the list
this.list_target.appendChild( new_row );

};

};
  #6 (permalink)  
Antiguo 30/01/2009, 10:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Archivos multiples

La llave ['error'] te indica el error, si es 0 es que no hay ningún error, si es diferente de 0, es que hay un error, en el Manual de PHP puedes ver lo que significa cada error.

Saludos
  #7 (permalink)  
Antiguo 02/02/2009, 07:34
Avatar de jmillan  
Fecha de Ingreso: julio-2008
Mensajes: 60
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Archivos multiples

ok si ya lo resolvi en efecto es ese error muchas gracias, ahora tengo otro problema como cargo el phat de cada imagen a una base de datos.. lo he hecho solo cargando un archivo pero no multiples archivos.
  #8 (permalink)  
Antiguo 02/02/2009, 07:38
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: Archivos multiples

Es el mismo procedimiento, solo que esta vez ejecutaras la consulta dentro de el ciclo. O.o!
  #9 (permalink)  
Antiguo 14/02/2009, 13:08
Avatar de jmillan  
Fecha de Ingreso: julio-2008
Mensajes: 60
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Archivos multiples

Como haria para validar que los archivos quie se cargen sean solo jpg
  #10 (permalink)  
Antiguo 14/02/2009, 17:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Archivos multiples

Te recomiendo leas el manual tienes una llave ['type'] que te indica el tipo de archivo.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:45.