Hola a todos:
Necesito saber alguna funcion de como ver el formato del archivo que estoy subiendo el servidor, necesito validarlo que sea un pdf,
Si alguien sabe la funcion se lo agradeceria
Saludos a todos los del foro
Chauu
| ||||
sale de un formulario, no? Se supone que es $_FILES['nombre']['type'] pero a mi no me está andando. Más info en http://ar2.php.net/features.file-upload
__________________ |
| ||||
que tal si haces algo asi: $file = "archivo.pdf"; // ya llego desde el formulario $var = explode(".",$file); // lo dividimos por el punto, y sacamos array if($var["1"] == "pdf"){echo "es un archivo PDF... ahora lo subimos al server";} else{echo "no es un archivo PDF...";} algo asi no..... |
| ||||
y si es virus.pdf.exe? :P mejor sería un substr($file,strlen($file)-4,4) == ".pdf"
__________________ |
| |||
Cita: No es seguro ese método .. para eso "type" mira el formato MIME del archivo del archivo en sí .. no de su nombre que puede ser alterado.
Iniciado por Danger_ que tal si haces algo asi: $file = "archivo.pdf"; // ya llego desde el formulario $var = explode(".",$file); // lo dividimos por el punto, y sacamos array if($var["1"] == "pdf"){echo "es un archivo PDF... ahora lo subimos al server";} else{echo "no es un archivo PDF...";} algo asi no..... Un Saludo |
| ||||
aprovecho q iba a preguntar algo así... tengo un formulario y después quiero q me suba los archivos, si son gif o jpg y no muy grandes, pero con $_FILES no me devuelve lo q quiero pongo el codigo del formulario ty despues el PHP q se ejecuta
Código:
<form name="new1" method="post" action="new.php"> <input type="hidden" name="action" value="new1"> <tr><td colspan="2"><h1>Trabajos previos</h1></td></tr> <tr><td>Descripcion<br><input type="text" name="txt[]"></td><td valign="top">Imagen<br><input type="file" name="trabajo[]"></td></tr> <tr><td>Descripcion<br><input type="text" name="txt[]"></td><td valign="top">Imagen<br><input type="file" name="trabajo[]"></td></tr> <tr><td>Descripcion<br><input type="text" name="txt[]"></td><td valign="top">Imagen<br><input type="file" name="trabajo[]"></td></tr> <tr><td>Descripcion<br><input type="text" name="txt[]"></td><td valign="top">Imagen<br><input type="file" name="trabajo[]"></td></tr> <tr><td colspan="2"><input type="submit" value="Siguiente" ></td></tr> Código PHP:
__________________ |
| ||||
sepo yo tengo una validacion mas perfecta de los archivos gif o jpg $my_max_file_size = "102400"; # in bytes $image_max_width = "800"; $image_max_height = "600"; $allowed_types = array("image/bmp","image/gif","image/pjpeg","image/jpeg"); $registered_types = array( "application/x-gzip-compressed" => ".tar.gz, .tgz", "application/x-zip-compressed" => ".zip", "application/x-tar" => ".tar", "text/plain" => ".html, .php, .txt, .inc (etc)", "image/bmp" => ".bmp, .ico", "image/gif" => ".gif", "image/pjpeg" => ".jpg, .jpeg", "image/jpeg" => ".jpg, .jpeg", "application/x-shockwave-flash" => ".swf", "application/msword" => ".doc", "application/vnd.ms-excel" => ".xls", "application/octet-stream" => ".exe, .fla (etc)", "application/pdf" => ".pdf" ); function validate_upload($foto) { global $my_max_file_size, $image_max_width, $image_max_height,$allowed_types,$foto_type,$regis tered_types; $start_error = "\n<b>Error: </b>\n"; if ($foto == "none") { # Vemos si hay archvios $error .= "\n<li>La fotografía del producto NO fue modificada</li>"; } else { # Ver si los tipos son los correctos if (!in_array($foto_type,$allowed_types)) { $error .= "\nEl tipo de archivo que intenta subir no está permitido por motivos de seguridad, usted sólo puede subir archivos del siguiente tipo.:\n<ul>"; while ($type = current($allowed_types)) { $error .= "\n<li>" . $registered_types[$type] . " (" . $type . ")</li>"; next($allowed_types); } $error .= "\n</ul>"; } if (ereg("image",$foto_type) && (in_array($foto_type,$allowed_types))) { $size = GetImageSize($foto); list($foo,$width,$bar,$height) = explode("\"",$size[3]); if ($width > $image_max_width) { $error .= "\n<li>Su imágen no puede ser mas ancha que " . $image_max_width . " pixeles.</li>"; } if ($height > $image_max_height) { $error .= "\n<li>Su imágen no puede ser mas alta que " . $image_max_height . " pixeles</li>"; } } if ($error) { $error = $start_error . $error . "\n</ul>"; return $error; } else { return false; } } } # END validate_upload y de aca viene el formulario if (sizeof($imagen) > 0 && $imagen!="none") { $foto_type=$imagen_type; // Vemos si existe error al subir la imagen $error = validate_upload($imagen); if ($foto_type=="image/gif") $extension=".gif"; elseif ($foto_type=="image/pjpeg") $extension=".jpg"; $imagen_name=$id_imagen."d".$extension; if (!$error) { if (!@copy($imagen, "../$conf[7]/$imagen_name")) $imagen_error = "<p><b>ERROR:</b> No se ha podido copiar la imagen <b>$imagen_name</b> en el directorio de imagenes, revise los permisos de escritura de este directorio (/$conf[7]/)</p>"; } } |
| |||
Seppo .. Lee la documentación oficial al respecto .. el uso del formulario HTML que usas no es correcto .. le faltan definiciones para que tu formulario suba datos "binarios" y "texto plano" simultáneamente. http://www.php.net/manual/en/features.file-upload.php Cuando eso lo tengas claro .. puedes usar el código de ejemplo de mauricio2004, pero NO USES $foto_type .. $foto_name .. etc .. Usa los arrays superglobales por tu seguridad: $_FILES['foto']['type'] .. etc (en lugar de "foto" .. como se llame el campo de file= de tu formulario html). Tampoco uses copy() sino move_uploaded_file() ... y no uses @ .. sino no veras los mensajes de error que puedas tener para ver el problema .. Cuando todo funcione OK, si quieres lo usas pero no antes. Un saludo, Un saludo, Última edición por Cluster; 22/03/2005 a las 15:55 |
| ||||
OK, Cluster, gracias por la ayuda, pero sigue sin funcionarme... cambié a
Código:
agregandole el enctype que (me parece) es lo que decís que falta, pero el tamaño del archivo no lo puedo recuperar... me falta otra cosa?<form name="new1" method="post" enctype="multipart/form-data" action="new.php"> me dijiste que tengo un error en el formulario HTML y me mandaste al manual de PHP... de ahí copié el código del ejemplo, no sé si era eso lo q querías q vea
__________________ |
| |||
Bueno .. a todo esto .. el detalle que se me pasó antes es que trabajas con un "upload multiple": <input type="file" name="trabajo[]"> Así que el acceso a $_FILES para ese caso .. es diferente y lo tienes descrito en el própio manual oficial de PHP: http://www.php.net/manual/en/feature...d.multiple.php Fijate: $_FILES['userfile']['name'][$x] Ahora tendrás un array que recorrer (con un bucle for() lo puedes hacer) .... y a cada elemente de ese array .. será tu archivo que subes (de los N que tienes ahí para subir) .. Es ahí donde tienes que aplicar tu validación (dentro del bucle para cada archivo si lo requieres ..) El ejemplo de mauricio2004 podrías adaptarlo (pues valida bien el tema del formato MIME del archivo ..) pero tal cual no te sirve .. tenlo presente. Un saludo, |