Foros del Web » Programando para Internet » PHP »

Limitar peso y tipo de archivo en formulario

Estas en el tema de Limitar peso y tipo de archivo en formulario en el foro de PHP en Foros del Web. Hola que tal amigos, les envio un saludo quiero despejar algunas inquietudes respecto a un codigo que puse a prueba y funciono muy bien. Me ...
  #1 (permalink)  
Antiguo 28/10/2010, 11:23
 
Fecha de Ingreso: julio-2009
Mensajes: 74
Antigüedad: 14 años, 9 meses
Puntos: 5
Limitar peso y tipo de archivo en formulario

Hola que tal amigos, les envio un saludo quiero despejar algunas inquietudes respecto a un codigo que puse a prueba y funciono muy bien.

Me gustaria saber si puedes modificar el codigo para realizar las siguientes acciones en un envio.

*El peso del archivo a enviar adjunto (ejemplo que solo acepte como limite ficheros de 300k).

*Aceptar solo uno o mas tipos de archivos (ejemplo solo jpg o gif o ambos)

*Y si no cumpliese con estos 2 casos se le pudiera mostrar un popup marcando su error o bien que lo lleve a una pagina de aviso y me marque el error y le diga que vuelva a entrar al formularioa intentarlo correctamente.

Aqui les paso el codigo php

Código PHP:
<?php
function form_mail($sPara$sAsunto$sTexto$sDe)
{
$bHayFicheros 0;
$sCabeceraTexto "";
$sAdjuntos "";

if (
$sDe)$sCabeceras "From:".$sDe."\n";
else 
$sCabeceras "";
$sCabeceras .= "MIME-version: 1.0\n";
foreach (
$_POST as $sNombre => $sValor)
$sTexto $sTexto."\n".$sNombre." = ".$sValor;

foreach (
$_FILES as $vAdjunto)
{
if (
$bHayFicheros == 0)
{
$bHayFicheros 1;
$sCabeceras .= "Content-type: multipart/mixed;";
$sCabeceras .= "boundary=\"--_Separador-de-mensajes_--\"\n";

$sCabeceraTexto "----_Separador-de-mensajes_--\n";
$sCabeceraTexto .= "Content-type: text/plain;charset=iso-8859-1\n";
$sCabeceraTexto .= "Content-transfer-encoding: 7BIT\n";

$sTexto $sCabeceraTexto.$sTexto;
}
if (
$vAdjunto["size"] > 0)
{
$sAdjuntos .= "\n\n----_Separador-de-mensajes_--\n";
$sAdjuntos .= "Content-type: ".$vAdjunto["type"].";name=\"".$vAdjunto["name"]."\"\n";;
$sAdjuntos .= "Content-Transfer-Encoding: BASE64\n";
$sAdjuntos .= "Content-disposition: attachment;filename=\"".$vAdjunto["name"]."\"\n\n";

$oFichero fopen($vAdjunto["tmp_name"], 'r');
$sContenido fread($oFicherofilesize($vAdjunto["tmp_name"]));
$sAdjuntos .= chunk_split(base64_encode($sContenido));
fclose($oFichero);
}
}

if (
$bHayFicheros)
$sTexto .= $sAdjuntos."\n\n----_Separador-de-mensajes_----\n";
return(
mail($sPara$sAsunto$sTexto$sCabeceras));
}

if (
form_mail("[email protected]"$_POST[asunto],
"Los datos introducidos en el formulario son:\n\n"$_POST[email]))
echo 
"Su formulario ha sido enviado con exito";
?>

Les agredeceria sus comentarios acerca de tema, he estado investigando y cogiendo algunas lineas de codigo por otros lados y editando la parte del tamaño en el codigo y no he tenido exito, el codigo me parecio sencillo y comodo solo me gustaria saber con gente con experiencia que tan editable es para realizar lo que busco, gracias.
  #2 (permalink)  
Antiguo 28/10/2010, 13:33
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Limitar peso y tipo de archivo en formulario

Mira, en el sitio de PHP, acá específicamente hay un ejemplo de como filtrar el tipo de archivo. Aunque podrías utilizar también el mimetype, pero usa ese ejemplo mientras.

Con respecto al tamaño del archivo, ya estás bastante cerca, solo te falta verificar que sea menor a 300 (aunque no recuerdo si el tamaño está en kbytes, o simplemente bytes).
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 29/10/2010, 11:10
 
Fecha de Ingreso: julio-2009
Mensajes: 74
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Limitar peso y tipo de archivo en formulario

Use el codigo pero no me resulta amigo Spider, me podrias orientar en donde colocarlo correctamente?, gracias.
  #4 (permalink)  
Antiguo 29/10/2010, 14:29
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 14 años
Puntos: 131
Respuesta: Limitar peso y tipo de archivo en formulario

Este es el formulario
<form action="oki.php" method="post" enctype="multipart/form-data">
<input type="file" name="mmm" /><input type="submit" />

Este es el php que verifica que no pese mas 300kb y que no sean archivos diferentes a imagenes .jpg y .png

if($_FILES){
$a=$_FILES[mmm][size];
$b=$_FILES[mmm][type];
if($a>307200){
echo "El archivo es demasiado grande";
}
else{
if($b!="image/pjpeg" and $b!="image/x-png"){
echo "el archivo no es permitido";
}
else{
move_uploaded_file($_FILES[mmm][tmp_name],$_SERVER['DOCUMENT_ROOT']."/".$_FILES[mmm][name]);
}
}

}
  #5 (permalink)  
Antiguo 29/10/2010, 14:34
 
Fecha de Ingreso: julio-2009
Mensajes: 74
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Limitar peso y tipo de archivo en formulario

Gracias mi estimado Hack, asi como me lo mencionas que realiza ambas cosas a la vez hare pruebas con este codigo, luego les cuento como me fue, gracias.
  #6 (permalink)  
Antiguo 29/10/2010, 22:27
 
Fecha de Ingreso: julio-2009
Mensajes: 74
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Limitar peso y tipo de archivo en formulario

Hola de nuevo hack, ya probe tu ejemplo pero no es lo que busco ya que es para subir un archivo al servidor y luego trasladorlo a un folder en especifico, lo que yo busco es que en el mismo formulario se procese y verifique antes de hacer el envio y el resultado final sea en la bandeja de correo destino como archivo adjunto.

Seguire investigando pero gracias por el codigo anterior me sirve para aplicarlo a otras cosas que tengo proximas.

Etiquetas: limitar, peso, tipo, formulario
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 22:48.