Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/04/2008, 16:39
r0xdrig0
 
Fecha de Ingreso: diciembre-2007
Mensajes: 385
Antigüedad: 16 años, 11 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