Foros del Web » Programando para Internet » PHP »

Limirar tamaño a subir al servidor

Estas en el tema de Limirar tamaño a subir al servidor en el foro de PHP en Foros del Web. Hola a todos. Me gustaría limitar el tamaño de fotos que se puede subir al servidor. Script y formulario de adjuntar datos @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código ...
  #1 (permalink)  
Antiguo 30/05/2011, 04:49
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 13 años, 9 meses
Puntos: 4
Limirar tamaño a subir al servidor

Hola a todos.

Me gustaría limitar el tamaño de fotos que se puede subir al servidor.

Script y formulario de adjuntar datos

Código PHP:
Ver original
  1. <script language="javascript" type="text/javascript">
  2. if(isset($_POST['submit'])){
  3. $error = false;
  4. $tamanio=$_FILES['imagen']['size'];
  5.  
  6. if ($tamanio>10240){
  7. echo "Tamaño incorrecto";}
  8.  
  9. // si hay imagen.
  10. if (is_uploaded_file($_FILES['imagen']['tmp_name'])) {  // ¿Se puede eliminar este paso? el archivo lo mando por post a otro .php que valida en el servidor (ver código + abajo)
  11. //revisamos que sea jpg
  12. if ($_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/pjpeg"){
  13. //nombre de la imagen
  14. $foto1 = time()."-1.jpg";
  15. </script>

Imagen a adjuntar:
Código PHP:
Ver original
  1. <input type="file" name="foto1" />


form:

Código PHP:
Ver original
  1. <form name="form1" method="post" action="">
  2.     <input type="hidden" name="MAX_FILE_SIZE" value="90" />
  3.  
  4.       </form>

archivo que valida en el servidor:

Código PHP:
Ver original
  1. <?
  2. $db=mysql_connect("??","??","??",$db);
  3.     mysql_select_db("??",$db);
  4.  
  5. $nombre=$_POST[nombre];
  6. ...
  7.     $m2=$_POST[m2];
  8.     $foto1 = $_FILES['foto1']['name'];
  9.     $prefijo = substr(md5(uniqid(rand())),0,10);
  10.  
  11.  
  12. $uniqueID = substr(md5(uniqid(rand())),0,10);
  13. $foto1=$uniqueID.".".substr($foto1,-3);
  14.  
  15.  
  16. // "directorio" es el directorio donde vas a subir la imagen.
  17. mysql_query("insert into contactos( foto1 ... , m2 )
  18. values('/imagenes/$foto1','$m2')",$db) or die("La clave introducida, ya existe. Elige otra");  
  19.  
  20. //ahora subamos la imagen, "directorio" es el directorio donde la vas a subir.
  21. $copy = copy($_FILES['foto1']['tmp_name'], "../../imagenes/".$foto1);
  22.  
  23.  
  24. ?>

Muchas gracias.
  #2 (permalink)  
Antiguo 30/05/2011, 05:22
 
Fecha de Ingreso: marzo-2011
Mensajes: 107
Antigüedad: 13 años
Puntos: 22
Respuesta: Limirar tamaño a subir al servidor

¿No te hace falta el enctype="multipart/form-data" en el form?

Parece que lo tienes bien, lo unico que se pase o no se pase el tamaño, vas a meter el archivo sí o sí.

Código PHP:
if ($tamanio>10240)
{
   echo 
"Tamaño incorrecto";
}
else 
// si el archivo es del tamaño correcto
{
   
// si hay imagen.
   
if (is_uploaded_file($_FILES['imagen']['tmp_name'])) 
  { 
       
// ¿Se puede eliminar este paso? el archivo lo mando por post a otro .php que valida en el servidor (ver código + abajo)
      //revisamos que sea jpg
      
if ($_FILES['imagen']['type'] == "image/jpeg" || $_FILES['imagen']['type'] == "image/pjpeg")
      {
         
//nombre de la imagen
      
$foto1 time()."-1.jpg";
      }
   }

  #3 (permalink)  
Antiguo 30/05/2011, 06:54
 
Fecha de Ingreso: mayo-2011
Mensajes: 47
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Limirar tamaño a subir al servidor

Yo tengo este script de subida de archivos q me ha sido de mucha ayuda espero q te sirva ,

ya que necesitas limitar el tamaño mira en la variable $maxlimit donde se estipula que el valor sea x donde x se da en bits
Código PHP:
$folder "images/"// Carpeta a la que queremos subir los archivos
            
$maxlimit 50000000000// Máximo límite de tamaño (en bits)
            
$allowed_ext "rar,jpg,bmp,jpeg"// Extensiones permitidas (usa una coma para separarlas)
            
$overwrite "no"// Permitir sobreescritura? (yes/no)
            
$match ""
            
$filesize $_FILES['file']['size']; // toma el tamaño del archivo
            
$str "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
            
$filename "";
            
$error="";
            for(
$i=0;$i<12;$i++) 
                {
                    
$filename .= substr($str,rand(0,62),1);
                }                                        
            if(!
$filename || $filename==""// mira si no se ha seleccionado ningún archivo
                
{
                    
$error "- Ningún archivo selecccionado para subir.<br>";
                }
            elseif(
file_exists($folder.$filename) && $overwrite=="no")// comprueba si el archivo existe ya
                

                    
$error "- El archivo <b>$filename</b> ya existe<br>";
                }
                
// comprobar tamaño de archivo
            
if($filesize 1// el archivo está vacío
                
{
                    
$error .= "- Archivo vacío.<br>";
                }
/* en esta parte es en donde verificamos q el archivo sea mayor o si quieres menor al especificado*/
            
elseif($filesize $maxlimit// el archivo supera el máximo
                
{
                    
$error .= "- Este archivo supera el máximo tamaño permitido.<br>";
                }
            
$sep=explode('image/',$_FILES["file"]["type"]);
            
$tipo=$sep[1];
            if(
$tipo == "gif" || $tipo == "jpeg" || $tipo == "jpg" || $tipo == "bmp")
                {
                    
$match "1"// Permite el archivo
                
}                    
            if(!
$match)
                {
                    
$error .= "- Este tipo de archivo no está permitido: $tipo<br>";
                }    
            if(@
$error)
                {
                    print 
"Se ha producido el siguiente error al subir el archivo:<br> $error"// Muestra los errores
                
}
            else
                {
                    
move_uploaded_file($_FILES['file']['tmp_name'], $folder.$filename.'.'.$tipo);                    
                } 
espero q te haya servido de algo, a recuerda q este script cambia el nombre del archivo de forma aleatoria.
  #4 (permalink)  
Antiguo 30/05/2011, 13:48
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Limirar tamaño a subir al servidor

Gracias me pongo en ello.
  #5 (permalink)  
Antiguo 30/05/2011, 14:20
 
Fecha de Ingreso: julio-2010
Ubicación: Cerca Sitges (Barcelona)
Mensajes: 98
Antigüedad: 13 años, 9 meses
Puntos: 4
Respuesta: Limirar tamaño a subir al servidor

Hola.
Si no entiendo mal, no es necesario crear un formulario y que este apunte a otro archivo.php para q valide.

¿Cómo sería posible fusionar los códigos que tengo actualmente?

¿Seria posible adjuntar varias fotos, persona de contacto, teléfono...en solo un código?

Gracias.

Etiquetas: servidor, tamaño
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 17:54.