Foros del Web » Programando para Internet » PHP »

Ver el formato del archivo

Estas en el tema de Ver el formato del archivo en el foro de PHP en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 22/03/2005, 15:03
Avatar de mauricio2004  
Fecha de Ingreso: marzo-2004
Mensajes: 264
Antigüedad: 13 años, 8 meses
Puntos: 0
Ver el formato del archivo

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
  #2 (permalink)  
Antiguo 22/03/2005, 15:10
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
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
  #3 (permalink)  
Antiguo 22/03/2005, 15:16
Avatar de Danger_  
Fecha de Ingreso: diciembre-2004
Ubicación: Queretaro, México
Mensajes: 395
Antigüedad: 13 años
Puntos: 0
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.....
  #4 (permalink)  
Antiguo 22/03/2005, 15:20
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
y si es virus.pdf.exe? :P
mejor sería un substr($file,strlen($file)-4,4) == ".pdf"
  #5 (permalink)  
Antiguo 22/03/2005, 15:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
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.....
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.

Un Saludo
  #6 (permalink)  
Antiguo 22/03/2005, 15:23
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
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:
    $id_ftp=ftp_connect(SERVER,PORT);
    
ftp_login($id_ftp,USER,PASSWORD);
    
ftp_pasv($id_ftp,MODO);
    for (
$a=0;$a<count($_POST['trabajo']);$a++) {
        echo 
$_FILES['trabajo'][$a]['size']."<br>";
    } 
y no me devuelve el echo :(
  #7 (permalink)  
Antiguo 22/03/2005, 15:43
Avatar de mauricio2004  
Fecha de Ingreso: marzo-2004
Mensajes: 264
Antigüedad: 13 años, 8 meses
Puntos: 0
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 ([email protected]($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>";
}
}
  #8 (permalink)  
Antiguo 22/03/2005, 15:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
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
  #9 (permalink)  
Antiguo 22/03/2005, 16:06
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 12 años, 8 meses
Puntos: 17
OK, Cluster, gracias por la ayuda, pero sigue sin funcionarme...
cambié a
Código:
<form name="new1" method="post" enctype="multipart/form-data" action="new.php">
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?

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
  #10 (permalink)  
Antiguo 23/03/2005, 08:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
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,
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 16:10.