Ver Mensaje Individual
  #43 (permalink)  
Antiguo 24/04/2010, 19:49
sebcun
 
Fecha de Ingreso: febrero-2002
Mensajes: 49
Antigüedad: 22 años, 9 meses
Puntos: 0
Respuesta: Aporte:Subir archivos al server, guardar ruta en la BBDD y descargarlos.

Cita:
Iniciado por jaronu Ver Mensaje
Hola, presento una aplicación optenida de varios scripts de la red, adaptados por mi, Javier Rojas, y con la colaboración de GatorV del foro de php de www.forosdelweb.com, sin su ayuda no hubiera solucionado los problemas que me surgian en la aplicación, Tambien mis agradecimientos a Carlojas, que tambien colaboro con su sabiduria, Y a Okram que puso la guinda final para forzar la descarga de los archivos.

La aplicación consiste en varios scripts, los cuales te permiten:
· Cargar archivos a un directorio de tu web
· Guardar la ruta al directorio y la información que desees del archivo, en una Base de datos, en este caso MySQL
· Listar el contenido de archivos paginados en funcion del numero de resultados
· Y el ultimo script que permite la descarga del archivo.


Empezamos por configurar la tabla de la base de datos, archivo descargas.sql

Descargas.sql

CREATE TABLE `archivos` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(120) NOT NULL,
`description` varchar(250) NOT NULL,
`ruta` varchar(100) NOT NULL,
`tipo` varchar(50) NOT NULL,
`size` int(50) NOT NULL,
PRIMARY KEY (`id`)


Ahora el codigo que procesa la carga de archivos a una carpeta que ya hemos creado en el hosting o en local, con su formulario.



Código PHP:
<?php 
//guardar como subir_archivos.php
//Aplicacion por Javier Rojas de www.tuboolar-web.com con la inestimable ayuda de  GatorV

if (isset($_POST['submit'])) {  
    if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
    
    
      
// me verifica haya sido cargado el archivo 
        
$ruta_destino "../cevit/archivos/";
        
$namefinaltrim ($_FILES['fichero']['name']); //linea nueva devuelve la cadena sin espacios al principio o al final
        
$namefinalereg_replace (" """$namefinal);// linea nueva devuelve la cadena sin espacios entre palabtas
        
$uploadfile$ruta_destino $namefinal



        if(
move_uploaded_file($_FILES['fichero']['tmp_name'], $uploadfile)) { // se coloca en su lugar final 
                   
                    
echo "<b>Upload exitoso!. Datos:</b><br>"
                    echo 
"Nombre: <i><a href=\"".$ruta_destino $_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>"
                    echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>"
                    echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>"
                    echo 
"<br><hr><br>"
                        


//conectamos a la base de datos para almacenar los datos y la ruta del archivo

                 
mysql_connect('localhost','Tu_user','Tu_password')or die ('Ha fallado la conexión: '.mysql_error());
                 
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());


 
 
 
                   
$nombre_archivo  $_POST["nombre_archivo"];
                   
$description  $_POST["description"];


                   
$query "INSERT INTO archivos 
    VALUES (0,'$nombre_archivo','$description' , '"
.$_FILES['fichero']['name']."','".$_FILES['fichero']['type']."', '".$_FILES['fichero']         ['size']."')";

       
mysql_query($query) or die(mysql_error());
       echo 
"El archivo '".$nombre_archivo."' ha sido registrado de manera satisfactoria.<br />";
                
    


                     
        } 
    } 
 }
          
// A continuación el formulario 

?>
<body>
<form action="<?php echo $_SERVER['PHP_SELF'?>" method="post" enctype="multipart/form-data"> 
    Archivo: <input name="fichero" type="file" size="150" maxlength="150"> 
    <br> Nombre: <input name="nombre_archivo" type="text" size="70" maxlength="70">
    <br> Descripcion: <input name="description" type="text" size="100" maxlength="250">
    <br>
  <input name="submit" type="submit" value="Upload!">  
</form> 
</body>
Jaronu, he aprobechado muy bien tu contribución y por eso te doy las gracias, descubrí que al subir un archivo, si hago F5 la aplicación vuelve a grabar los datos en la base, le estube dando vueltas pero no encontré la solución.
Tendrías alguna idea de como solucionar esto?
Mil gracias
__________________
Sebcun