Bienvenid@ webmaster Acceso Directo :
ir al home
Home
Productos y Servicios
Artículos y Secciones
Foros de Discusión
Registro de Usuarios
Usuarios
Canal del Webmaster
Contactos
©2004 Blasten.com
Envía tus Articulos


ArtículoComentariosRecomendarGuardarImprimir
Upload de Ficheros con PostgreSQLResaltado
En esta Ocasi?n, intentare ense?arles la manera de crear sistemas de uploads de ficheros al servidor, usando PostgreSQL como motor de bases de datos para el registro de los mismos, para su posterior validaci?n por parte del webmaster, o bien para ser agregados a descargas, ya depender? de ti que uso darle.

B?sicamente se trata del mismo script dise?ado para MySQL

Estas ves lo haremos de manera que solo ciertas extensiones de ficheros sean admitidas y tambi?n restringiremos el peso, es decir, si un fichero supera una determinada cantidad de KB, simplemente no podr? ser subido y por lo tanto no podr? insertarse en nuestra base de datos, incluiremos en todo este script un sistema que nos permitir? ver cuantos scripts se encuentran almacenados en nuestra base de datos al igual que en nuestro servidor, e incluiremos su respectivo sistema para borrarlos en caso de que no sean aceptados por nosotros.

Esta ser? la estructura de nuestra tabla que almacenara los datos de nuestros ficheros con descripci?n incluida.


# Estructura de tabla para la tabla `zips` 

CREATE TABLE zips ( 

zip character varying(30) NOT NULL, 
zip_descripcion character varying(255) NOT NULL 

); 


ALTER TABLE ONLY zips
ADD CONSTRAINT zips_pkey PRIMARY KEY (zip); [/codigo]

Como siempre deberemos empezar creando nuestro fichero para conectar con la base de datos de nuestra elecci?n. Primero, creamos nuestro script que nos conectar? con la base de datos y esta es su estructura:


 <? 
# Establecemos la conexi?n con el servidor 
$conexion pg_connect "host=localhost port=5432 password=contrase?a user=usuario dbname=pruebas" ); 
?> 



Recordemos que localhost usualmente es el host donde vamos a conectar con nuestra base de datos y que en este caso, usuario sera el usuario de nuestra base de datos PostgreSQL , contrase?a ser?a nuestra contrase?a que asignemos a nuestro usuario y pruebas ser?a el nombre de nuestra base de datos , claro que debemos tomar en cuenta que esto puede variar dependiendo de la configuraci?n que hallamos elegido, usa tus propios par?metros. Finalmente el puerto o port , se refiere al n?mero de puerto que se conectara, preferiblemente no editar, guardamos este fichero con el nombre de conexion.php

Comenzaremos creando nuestro formulario con la siguiente estructura y lo llam?remos subir_archivos.php .



<html> 
<head> 
<title>Subir Ficheros al servidor</title> 
</head> 
<body> 
<center><b>Subir Ficheros&nbsp;&nbsp;|&nbsp;&nbsp;<a href="ver_ficheros.php">Ver Ficheros</a></b></center> 
<form action="subir.php" method="post" enctype="multipart/form-data"> 
<input name="archivo" type="file"><br> 
Descripci?n de tu Script<br> 
<textarea name="zip_descripcion" wrap="virtual" cols="50" rows="6"></textarea> 
<br>255 Caracteres M?ximo<br><br> 
<input type="submit" name="Submit" value="Enviar Archivo"> 
</form><br> 

</body> 
</html> 



Este formulario tiene un par?metro llamado enctype , con el valor "multipart/form-data" , informando que env?a datos y archivos, opci?n indispensable para la correcta subida del fichero.
Tambi?n utilizamos el par?metro "file" en el input para que el usuario pueda explorar su computadora en busca del archivo a subir.

Acontinuaci?n, pongo el script que nos ejecutara la subida del fichero e insertar? la descripci?n del mismo en la base de datos llamalo subir.php .


<html> 
<head> 
     <title>Subir Ficheros al servidor</title> 
</head> 
<body> 
<center><b>Subir Scripts</b><br> 
<?php 
## Autor V?ctor simental 

$RENAME "fichero_" $_FILES 'archivo' ][ 'name' ]; //Renombramos el archivo con el prefijo fichero_ 
if ( file_exists "upload/$RENAME" )) { //Comprobamos si existe un fichero con el mismo nombre, en caso de que exista, lo informamos con el siguiente mensaje. 

echo "<font color=\"#990000\">Por favor renombra tu fichero <b>" $_FILES 'archivo' ][ 'name' ]. "</b> por que ya existe uno con ese nombre.</font>" 


//Si no existe uno asi... 

else{ 
//Conectamos con nuestra base de datos. 

include( "conexion.php" ); 

//Definimos las carpeta donde sera subido este fichero, debemos otorgar permisos al servidor poner chmode 0777 a la carpeta upload 

$path_upload 'upload/' 
//La funcion de php explode, guardamos en un array el nombre del archivo segun el primer parametro. 

$extension explode "." $_FILES 'archivo' ][ 'name' ]); 

//Guardamos el array en una sola variable $num 
$num count $extension )- 
     if( 
$extension $num ] == "zip" || $extension $num ] == "gz" ){ //Permitimos subir solo zips y gz 

if( $_FILES 'archivo' ][ 'size' ] < 30000 ){ //Definimos el peso en Kb que tendran los fichero a subir. 

if ( move_uploaded_file $_FILES 'archivo' ][ 'tmp_name' ], $path_upload $RENAME )){ //Vas pa' dentro :-) 
     //Insertamos estos datos en nuestra base de datos         
pg_exec "INSERT INTO zips (zip, zip_descripcion) VALUES ('$RENAME', '$_POST[zip_descripcion]')" ); 

             echo 
"<font color=\"#0000ff\">El fichero <b>" $_FILES 'archivo' ][ 'name' ]. "</b> fue subido con ?xito. 
             <br>Gracias por tu Aportaci?n. El sistema lo ha renombrado a <b>$RENAME</b></font>" 

             } 
             else 
             { 
             echo 
"<font color=\"#990000\">Hubo un error al tratar de subir este Fichero.</font>" //Sabe que paso... 

         } 
         else 
         { 
         echo 
"<font color=\"#990000\">El fichero <b>" $_FILES 'archivo' ][ 'name' ]. "</b> supera los <b>30kb</b>, por lo tanto no se ha podido subir.</font>" 

         }     
     } 
     else 
     { 
     echo 
"<font color=\"#990000\">El formato del fichero no es valido, solo se aceptan comprimidos a <b>.zip</b> ? <b>.gz</b></font>" 

     } 
pg_close $conexion ); 

//Al fin.. uff!! 
?> 
</center> 
</body> 
</html> 



Pues creo que hasta aqu? vamos bien, y como dije al principio que usar?amos bases de datos y ahora necesitamos el script que nos permitir? ver y saber con cuantos ficheros contamos en nuestra base de datos y servidor, este script deber?s llamarlo ver_ficheros.php


<html> 
<head> 

    <title>Subir Ficheros al servidor</title> 
</head> 
<body> 
<center><b>Ver Ficheros&nbsp;&nbsp;|&nbsp;&nbsp;<a href="subir_archivos.php">Subir Ficheros</a></b><br> 
<?php 
//Conectamos con nuestra base de datos. 

include( "conexion.php" ); 
//Hacemos la consulta a nuestra base de datos usando la funcion pg_fetch_row(), asi mismo usando while para hacer un bucle que nos devolvera la filas existentes si las hubiera. 

$zipresult pg_exec "SELECT * FROM zips" ); 

while(list( 
$zip $zip_descripcion ) = pg_fetch_row $zipresult )){ 

     echo 
"<br><b>Titulo del Archivo</b> $zip<br> 
     <b>Descrici?n</b><br><textarea name='zip_descripcion' wrap='virtual' cols='50' rows='6'>$zip_descripcion</textarea><br> 
     [<a href=\"borrar_zips.php?zip=$zip&amp;ok=0\">Borrar este Fichero</a>] 

     <hr noshade size=-2 width=\"50%\" align=\"center\">" 


     } 
//cerramos el bucle y la conexi?n 
pg_close $conexion ); 

?> 
</center> 
</body> 
</html> 



El significado de una sentencia while es simple. Le dice a PHP que ejecute la(s) sentencia(s) anidada(s) repetidamente, mientras la expresi?n while se eval?e como TRUE. El valor de la expresi?n es comprobado cada vez al principio del bucle, as? que incluso si este valor cambia durante la ejecuci?n de la(s) sentencia(s) anidada(s), la ejecuci?n no parar? hasta el fin de la iteraci?n (cada vez que PHP ejecuta las sentencias en el bucle es una iteraci?n). A veces, si la expresi?n while se eval?a como FALSE desde el principio de todo, la(s) sentencia(s) anidada(s) no se ejecutar?n ni siquiera una vez.

Ahora creamos nuestro script que se encargara de borrar nuestro fichero seleccionado, en cual llamaremos borrar_zips.php .


<html> 
<head> 
     <title>Subir Ficheros al servidor</title> 
</head> 
<body> 
<center><b>Ver Ficheros</b><br> 

<?php 
## Autor V?ctor simental 

//Conectamos con nuestra base de datos. 
include( "conexion.php" ); 
//tomamos el nombre de la variable borrar_zips.php?zip= por el metodo GET 

$zip $_GET 'zip' ]; 
//sacamos de nuestra base de datos el fichero comprandolo con where, asegurandonos que sea el que solicitamos y no otro. 
$result pg_exec "select * FROM zips where zip='$zip'" ); 
     list( 
$zip $zip_descripcion ) = pg_fetch_row $result ); 

//Hacemos un condicional en el cual recibimos la variable $ok, esta en caso de contener el valor de cero, nos permitira decidir si estamos seguros de querer borrar realmente el fichero seleccionado 

if ( $_GET 'ok' ] == ) { 
      echo 
"<center>?Esta seguro de querer Borrar este Fichero?<br> 
          <b>$zip<br>Descripci?n:</b> 
          <br />$zip_descripcion<br /><br />" 
"[ <a href=\"borrar_zips.php?zip=$zip&amp;ok=1\" />Si</a> | <a href=\"ver_ficheros.php\" />No</a> ]" 
"</center><br />" 

     } 
//si aceptamos borrar el fichero cambiamos el valor de $ok a 1, y de esta manera decimos al script que estamos completamente seguros de borrar el fichero seleccionado 

elseif ( $_GET 'ok' ] == ) { 
//borramos el fichero de nuestro servidor con unlink ponemos una @ para evitar que PHP nos envie un mensaje de error en caso de que no pueda borrar el fichero seleccionado 
unlink "upload/$zip" ); 
//consultamos a nuestra base de datos y compramos el nombre del fichero con where, si este es igual al contenido de $zip borrar este dato mediante DELETE, asi lo borramos de nuestra base de datos. 
pg_exec "delete from zips where zip='$zip'" ); 
//Enviamos un mensaje confirmando las acciones y redireccionamos.... 
echo "Fichero Borrado con Exito<br><META HTTP-EQUIV=Refresh CONTENT=\"3; URL= ver_ficheros.php\">\n" 

     } 
//cerramos la conexion 
pg_close $conexion ); 

?> 
</center> 
</body> 
</html>




Por ?ltimo debo decirte que a ti te tocar? la parte para crear un area para administrar este script, de lo contrario, cualquier persona podr?a hacer mal uso de el en tu web site, y dado que solo trata sobre como subir Ficheros con Bases de datos por medio de php, creo que esta claro como debes hacerlo, cualquier comentario es bienvenido a la siguiente direcci?n: webmaster@blasten.com

Es todo Salu2.




Artículos Relacionados
Upload de archivos al servidor (PHP)
Upload de archivos al servidor (PHP)
Recorrer ficheros de un directorio (PHP)
Descomprimir ficheros en tu hosting Linux (PHP)

Más Artículos relacionados >>
Artículo anterior Artículo siguiente
Descargar este contenido

Autor: Autor V?ctor simenta
Fecha: 28/6/2004 (565 días) Lecturas : 4.730
Valoración :
Comentarios: 45

fmVXcTdSvXWlB

application bad cre
Valoración:
CvyQkGDeLmvQASGW

aciphex gqpbqa
Valoración:
wHVkivIwRvBNuVK

xxvqxpcm, acquistare viagra, xergbv
Valoración:
dRIKCTewf

teekwedb, achat cialis, fqlk
Valoración:
oVXZYpPUYpWq

ypiycizy, achat cialis pa
Valoración:
fnScQMvwNTnrzWlvW

hbqeoyzf, acheter cialis pas cher, qoheaoot
Valoración:

Agregar a mi lista
Solicitar Ayuda


subir página
Los contenidos expuestos en blasten.com® son propiedad única de sus autores, por lo cual se prohíbe la reproducción total o parcial de los contenidos expuestos en este sitio sin previo consentimiento del autor y el editor. Para intercambios de contenidos haga clic aqui y contáctenos. El logotipo y el nombre BLASTEN así como todos los gráficos expuestos son propiedad exclusiva de este portal.
©2004-2005 blasten.com Network