Problema al varidar archivos adjuntos

Tengo que validar las extensiones de varios archivos adjuntos en un formulario pero con este código no me adjunta los .zip me imprime lo que contiene la varble type como
53error un numero y error y no se porque.
la idea es validar los archivos para identificar su extencion para guardarlos en la carpeta adjuntos como puedo arreglarlo grcias
if (isset ($_FILES["archivos"])) {
         //De se así, 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++){
         //con el indice $i, poemos obtener la propiedad que desemos de cada archivo
         //para trabajar con este
          $tamano = $_FILES["archivos"]['size'][$i];
          $tipo = $_FILES["archivos"]['type'][$i];
          $archivo = $_FILES["archivos"]['name'][$i];
          $prefijo = substr(md5(uniqid(rand())),0,6);
          echo  $tipo;
switch ($tipo) {
    case "image/gif":
    $ext="gif";
    break;
    case "image/pjpeg":
    $ext="jpg";
    break;
    case "image/jpeg":
    $ext="jpg";
    break;
    case "image/png":
    $ext="png";
    break;
    case "application/zip":
    $ext="zip";
    break;
    case "application/msword":
    $ext="doc";
    break;
    case "application/pdf":
    $ext="pdf";
    break;
    case "application/rtf":
    $ext="rtf";
    break;
 case "application/octet-stream":
 $extension_type= explode ('.', $_FILES['archivo']['name']);
    $ext= end($extension_type);
 if($ext!="rar") {$ext="zip";}
    break;
    default:
 $ext="error";
    break;
}
    if ($archivo[$i] != "") {
        // guardamos el archivo a la carpeta files
        $destino =  "adjuntos/".$prefijo."_".$archivo[$i].".".$ext;
        echo $ext;
         echo"<br>";
        if (copy($_FILES['archivos']['tmp_name'][$i],$destino)) {
            $status = "Archivo subido: <b>".$archivo[$i]."</b>";
        } else {
                $status = "Error al subir el archivo";
            }
    } else {
        $status = "Error al subir archivo";
    }
            }
      }

1 Respuesta

Respuesta
1
¿Podrías poner el error exacta que estas obteniendo?
Marcelo
la variable $tipo = $_FILES["archivos"]['type'][$i]; me devuelve lo siguiente
application/x-zip-compressederror  y por eso motivo no puedo identificar la extencion para colocarla en mi carpeta abjuntos
switch ($tipo) {
case "application/zip":
    $ext="zip";
}
Y mis archivos .zip suben pero sin extensión que puedo hace
y gracias por tu ayuda
Yo generalmente hago un split, en base al punto, y agarro el ultimo elemento del array que me devuelve, con lo que te quedaría la extensión.
El archivo adjunto es enviado desde otros formulario en ese caso como seria el código utilizando el split porque no tengo el archivo con el formato nombre. Extensión si no identifico cada valor por separado, tamaño, nombre, tipo etc..
Gracias por tu ayuda
Algo así
$explode = explode(".",$archivo);
$ext = $explode[sizeof($explode) - 1];

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas