Foros del Web » Programando para Internet » PHP »

Restringir Tamaño de Imagen para subirla a la Base de datos (Postgre y php)

Estas en el tema de Restringir Tamaño de Imagen para subirla a la Base de datos (Postgre y php) en el foro de PHP en Foros del Web. Hola amgigos del foro, estoy aqui nuevamente para pedir su ayuda en lo siguiente: necesito subir imagenes a la base de datos (estoy trabajando con ...
  #1 (permalink)  
Antiguo 13/04/2008, 16:39
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 4 meses
Puntos: 0
Restringir Tamaño de Imagen para subirla a la Base de datos (Postgre y php)

Hola amgigos del foro, estoy aqui nuevamente para pedir su ayuda en lo siguiente:

necesito subir imagenes a la base de datos (estoy trabajando con postgre 8.2 y con php), y baje un script muy bueno para ellos, dicho escript permite subir cualquier tipo de archivo a la bd, pero mi rpoblema esta en restringir el tamaño de la imagen a subir es decir que no pese mas de 200kb he intentado pero no me resulta aca les dejo el codigo para ver si me pueden ayudar porfavor el script es:
Código PHP:
<?php
    
include_once "sitedefs.php";
    
# Muestra el mensaje de confirmación
    
$msg="";
    
# Verificamos que el formulario no ha sido enviado aun
    
$postback = (isset($_POST["enviar"])) ? true false;
    
# Concexión a la base de datos
    
$link pg_connect("host=$dbhost user=$dbuser password=$dbpwd dbname=$dbname") or die(pg_last_error($link));

    if(
$postback){        
        
# Variables del archivo
        
$type $_FILES["archivo"]["type"];
        
$tmp_name $_FILES["archivo"]["tmp_name"];
        
$size $_FILES["archivo"]["size"];
        
$nombre basename($_FILES["archivo"]["name"]);
        
//************************
        
if (!$size)
        {
            if (!((
strpos($type"gif") || strpos($type"jpeg")) && ($size 100000))) 
            {
                
$msg="Tamaño excesivo";
            }
        }
        
        
# Contenido del archivo
      
$fp fopen($tmp_name"rb");
      
$buffer fread($fpfilesize($tmp_name));
        
fclose($fp);
        
        
# Descripción de la foto
        
$desc $_POST["desc"];
            
        
$isoid=$_POST['tipo']=='oid'?true:false;
        
        if(!
$isoid){
            
# Escapa el contenido del archivo para ingresarlo como bytea
            
$buffer=pg_escape_bytea($buffer);
            
$sql "INSERT INTO foo(nombre, descripcion, archivo_bytea, mime, size)
                            VALUES ('$nombre', '$desc', '$buffer', '$type', $size)"
;
        }
        else{
            
# Inicia una transacción
            
pg_query($link"begin");
            
# Crea un objeto blob y retorna el oid
            
$oid=pg_lo_create($link);
            
$sql "INSERT INTO foo(nombre, descripcion, archivo_oid, mime, size)
            VALUES ('$nombre', '$desc', $oid, '$type', $size)"
;
        }
        
# Ejecuta la sentencia SQL
        
pg_query($link$sql) or die(pg_last_error($link));
        if(
$isoid){
            
# Abre el objeto blob
            
$blob=pg_lo_open($link,$oid,"w");
            
# Escribe el contenido del archivo
            
pg_lo_write($blob,$buffer);
            
            
# Cierra el objeto
            
pg_lo_close($blob);
            
# Compromete la transacción
            
pg_query($link"commit");
        }
        
        
    }
    
# Lista los archivos subidos a la base de datos
    
$sql "select id, nombre, descripcion, coalesce(archivo_oid,-1) as archivo_oid, 
        coalesce(archivo_bytea,'-1') as archivo_bytea from foo;"
;
    
$result pg_query($link$sql);
    
$lista "";
    if(
$result){
        while (
$row=pg_fetch_array($result)){
            
$lista .= "<tr>\n";
            
$lista .= "<td>$row[nombre]</td>\n";
            
$lista .= "<td>$row[descripcion]</td>\n";
            
$lista .= "<td><img src='download.php?id=$row[id]' title='Algún título' />
            <a href=\"index.php?id=$row[id]\" title=\"Intentar&aacute; mostrar el contenido del archivo\">Ver</a> | 
            <a href=\"download.php?id=$row[id]&amp;f=1\" title=\"Baja el archivo\">Bajar</a></td>\n"
;
            
$lista .= "</tr>\n";
        } 
    }
    
pg_free_result($result);    
    
pg_close($link);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
<title>Insertar archivos en un campo blob de PostgreSQL</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />
</head>
<body>
<div id="contenedor">
    <div id="cabecera"><h1>Insertar y recuperar un campo BLOB con PHP y PostgreSQL</h1></div>
    <span class="msg"><?=$msg?></span>
    Subir archivo:
    <div id="postform">
        <form name="frmblob" id="frmblob" method="post" 
            enctype="multipart/form-data" action="<?=$_SERVER['PHP_SELF'];?>">
            <fieldset>
                <label for="desc" accesskey="e">D<span class="key">e</span>scripci&oacute;n</label><br />
                <input type="text" id="desc" name="desc" size="55" title="Descripci&oacute;n del archivo" /><br />
                <label for="archivo" accesskey="r">A<span class="key">r</span>chivo</label><br />
                <input type="file" id="archivo" name="archivo" title="Archivo a subir" size="40" /><br />
                <label for="tipo" accesskey="i">T<span class="key">i</span>po</label><br />
                <select name="tipo" id="tipo" title="Tipo de dato del campo en que se guardar&aacute; el archivo">
                    <option value="bytea" title="bytea" selected>bytea</option>
                    <option value="oid" title="oid">oid</option>                    
                </select><br />
                <input type="submit" name="enviar" id="enviar" value="Guardar" />
            </fieldset>
        </form>
    </div>
    <div id="files">
        <table>
        <tr>
            <th>Nombre</th>
            <th>Descripci&oacute;n</th>
            <th>Mostrar</th>
        </tr>
            <?=$lista?>
        </table>
    </div>
    <div id="pie">
        <a href="http://www.buayacorp.com" title="Programaci&oacute;n y Dise&ntilde;o">BuayaCorp</a> &copy; 2005<br />
        <a href="http://creativecommons.org/licenses/by/2.0/">
            <img src="ccsomerights.gif" alt="Licencia de Creative Commons" border="0">
        </a>
    </div>
</div>
</body>
</html>
Ruego por su ayuda amigos Gracias de antemano
  #2 (permalink)  
Antiguo 13/04/2008, 16:49
 
Fecha de Ingreso: junio-2007
Ubicación: por ahi
Mensajes: 262
Antigüedad: 16 años, 9 meses
Puntos: 4
Re: Restringir Tamaño de Imagen para subirla a la Base de datos (Postgre y php)

Código PHP:
if (!((strpos($type"gif") || strpos($type"jpeg")) && ($size 100000)))  
            { 
                
$msg="Tamaño excesivo"
            } 
en esa linea es donde se debe definir el tama@o maximo del archivo.
__________________
Hernando Saenz Sanchez
  #3 (permalink)  
Antiguo 13/04/2008, 16:53
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Restringir Tamaño de Imagen para subirla a la Base de datos (Postgre y php)

Hola hernandos si asi es y eso es lo que hago, ya q esa linea la agregue yo pero no me funciona cuando lo ejecuto :S en que estoy fallando???? por favor ruego de su ayuda amigos de antemano gracias.
  #4 (permalink)  
Antiguo 13/04/2008, 17:24
 
Fecha de Ingreso: junio-2007
Ubicación: por ahi
Mensajes: 262
Antigüedad: 16 años, 9 meses
Puntos: 4
Re: Restringir Tamaño de Imagen para subirla a la Base de datos (Postgre y php)

Para mi el problema es que a la variable msg le asignas el mensaje de error, pero no se detiene la ejecucion del script, es decir todo se hace por eso. solo es mera informacion.
hay esta el porque no lo restringe
__________________
Hernando Saenz Sanchez
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:11.