Aunque no os lo creáis llevo meses intentando construir una subida múltiple de archivos. Me he encontrado con diversos problemas que muy poco a poco he ido solucionando, pero el último tramo se me está haciendo cuesta arriba.
Conseguí construir el código para subir una imagen, redimensionarla y que me subiese la ruta a una base de datos. Este es el código:
Código PHP:
if (isset($_POST['submit'])) {
if(!empty($_FILES['fichero']) && $_FILES['fichero']['error'] == UPLOAD_ERR_OK) {
if(is_uploaded_file($_FILES['fichero']['tmp_name'])) { // verifica haya sido cargado el archivo
$extension = explode(".", $_FILES['fichero']['name']);
if($_FILES['fichero']['type']=="image/jpeg" || $_FILES['fichero']['type']=="image/png" || $_FILES['fichero']['type']=="image/gif") {
$ruta= "../Imagenes/noticias/".date("Y")."/esgrima_".time().".".$extension[1]; // Ruta de la carpeta donde se guarda, más el nombre del archivo y la extensión
if(move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta)) { // se coloca en su lugar final
include('redimensionar_img.php');
echo "<b>Upload exitoso!. Datos:</b><br>";
echo "Nombre: <i><a href=\"".$ruta."\">".$_FILES['fichero']['name']."</a></i><br>";
echo "Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";
echo "Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";
echo "<br><hr><br>";
//Si se coloca en su lugar final se introduce la ruta en la base de datos
$rutafinal = substr($ruta,3);
$query_imagenes = "INSERT INTO tabla(ruta_imagen, id_noticia_img) VALUES ('$rutafinal','$idnoticia')";
$imagenes = mysql_query($query_imagenes, $conexion) or die(mysql_error());
if ($imagenes = TRUE) {
echo "La imagen ha sido insertada correctamente en la base de datos";
}
}
} else echo "El archivo es una imagen con una extensión no válida";
}
}
}
La función es la siguiente:
Código PHP:
function GetFiles() {
$files = array();
if (is_array($_FILES['fichero']['name'])) {
for ($i = 0; $i < count($_FILES['fichero']['name']); ++$i) {
$files[] = array(
'name' => $_FILES['fichero']['name'][$i],
'tmp_name' => $_FILES['fichero']['tmp_name'][$i],
'error' => $_FILES['fichero']['error'][$i],
);
if ($files[$i]['error'] == 4){
unset($files[$i]);
}
}
} else {
$files[] = $_FILES['fichero'];
}
return ($files);
}
Me dice que $files no esta definido cuando intento usarlo después de llamar a la función. He entendido que no la puedo usar ya que es una variable definida dentro de la función, pero entonces, como utilizo el resultado de GetFiles() para subir las imágenes??
Una pequeña ayuda por favor