Ver Mensaje Individual
  #7 (permalink)  
Antiguo 23/05/2012, 03:19
el_cos
 
Fecha de Ingreso: marzo-2012
Ubicación: A Coruña
Mensajes: 29
Antigüedad: 12 años, 1 mes
Puntos: 1
Respuesta: Problemas al subir varias imágenes

Hola de nuevo. ¡Muchas gracias! Simplemente probé a meter los $error dentro de divs y ya está. Eso sí, todavía no me explico como encontraste el fallo y qué era exactamente lo que me fallaba.

El caso es que ahora estoy haciendo otro archivo de subida parecidísimo, pero que deja subir muchos más tipos de archivo (son cosas del trabajo, no lo hago por aburrimiento, jeje). Y estoy haciendo comprobaciones, y me da el mismo tipo de fallo (pantalla en blanco, no da mensajes de error ni sube los archivos correctos) cuando se intentan subir varios tipos de archivos distintos que cumplen con todos los requisitos (y uno a unos sí deja subir esos tipos de archivos sin problema). En concreto, después de muchas pruebas, creo haber acotado donde falla (aunque no tenga mucho sentido), y es con las combinaciones de cualquier otro tipo de archivo con pdf, png o ppt (si subo un montón de archivos del resto de tipos no hay problema).

Te pongo aquí el código por si puedes proponer algún posible cambio que lo pueda solucionar. El tipo de archivo lo comprobé haciendo echos, y para los de open office hay que poner ese tipo de extensión tan rara. Saludos, te voy a dar karma:

if (isset ($_FILES["archivos"])) {

//de se asi, para procesar los archivos subidos al servidor solo debemos recorrerlo
//obtenemos la cantidad de elementos que tiene el arreglo archivos
$tot = count($_FILES["archivos"]["name"]);
//este for recorre el arreglo
for ($i = 0; $i < $tot; $i++){

$nombre_archivo = $_FILES['archivos']['name'][$i];
$tipo_archivo = $_FILES['archivos']['type'][$i];
$tamano_archivo = $_FILES['archivos']['size'][$i];
$error_subida = $_FILES['archivos']['error'][$i];
$nombre_temporal = $_FILES['archivos']['tmp_name'][$i];
$directorio = '../../../imagenes/descarga/';
$fecha = date("d-m-y-G-i");

$error="";
if (empty ($nombre_archivo)){
?><div><?php $error.="Error: el archivo $fecha.$nombre_archivo no tiene nombre<br>";?></div><?php
}
elseif ($error_subida!=0)
{
?><div><?php $error.="Error en la subida del archivo $fecha.$nombre_archivo <br>";?></div><?php
}
elseif ($tamano_archivo > 3072000){
?><div><?php $error.="Error: el archivo $fecha.$nombre_archivo no se ha subid porque pesa más de 3 MB <br>";?></div><?php
}
else {
if (strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "pjpeg") || strpos($tipo_archivo, "x-png")
|| strpos($tipo_archivo, "octet-stream") || strpos($tipo_archivo, "vnd.oasis.opendocument.graphics")
|| strpos ($tipo_archivo, "vnd.oasis.opendocument.presentation")
|| strpos ($tipo_archivo, "vnd.oasis.opendocument.spreadsheet")
|| strpos ($tipo_archivo, "vnd.oasis.opendocument.text")
|| strpos ($tipo_archivo, "pdf") || strpos ($tipo_archivo, "rar")
|| strpos ($tipo_archivo, "text") || strpos ($tipo_archivo, "richtext")
|| strpos ($tipo_archivo, "tiff") ||strpos ($tipo_archivo, "xls") || strpos ($tipo_archivo, "odt")
|| strpos ($tipo_archivo, "plain") || strpos ($tipo_archivo, "zip")) {}
else {
?><div><?php $error.="Error: el archivo $fecha.$nombre_archivo sólo puede ser de tipo doc, docx, gif, jpg,
odg, odp, ods, odt, pdf, png, ppt, rar, rtf, tiff, txt, xls o zip.<br>";?></div><?php
}
}

if($error<>""){
echo $error;
continue;
}

if (move_uploaded_file($_FILES['archivos']['tmp_name'][$i], $directorio.$fecha.$nombre_archivo)){

//Aquí irían instrucciones de actualización, las que sean
(...)
(...)

?>
<table>
<tr>
<td width="12%" align="center" valign="middle">
<img src="http://www.forosdelweb.com/../imagenes/descarga/<?php echo $fecha.$nombre_archivo?>" align="middle" />
<br /> <br /> <br />
La imagen <?php echo $nombre_archivo;?> fue subida correctamente
</td>
</tr>
</table>

<?php

}

}

}