Foros del Web » Programando para Internet » PHP »

Aporte: Aplicacion de centro de descargas. parte 1

Estas en el tema de Aporte: Aplicacion de centro de descargas. parte 1 en el foro de PHP en Foros del Web. 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 ...

  #1 (permalink)  
Antiguo 28/02/2008, 09:00
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Aporte:Subir archivos al server, guardar ruta en la BBDD y descargarlos.

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>

Última edición por jaronu; 17/10/2008 a las 04:35
  #2 (permalink)  
Antiguo 28/02/2008, 09:03
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Aporte: Aplicacion de centro de descargas. parte 2

Ahora la consulta ala Base de datos para listar los resultados y paginarlos.
Se compone de dos scripts, listar_archivos.php, que muestra en pantalla los datos obtenidos de la base de datos con un link para su descarga, y el otro que se llama paginator.inc.php. PAGINATOR, clase de Jpinedo.
Listado de resultados totalmente personalizable, hasta el numero de resultados por pagina que quieres, colores, etc...




Código PHP:
<?php   
//listar_archivos.php
        
$conexion mysql_connect('localhost','tu_user','tu_clave')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('registro')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
 

           
//Sentencia sql (sin limit)
           
$_pagi_sql "SELECT   id, name, description, ruta, tipo, size FROM archivos";  
           
$_pagi_result mysql_query($_pagi_sql $conexion) or die ( mysql_error() );  
 

  
    


//cantidad de resultados por página (opcional, por defecto 20)
$_pagi_cuantos 2;//Elegí un número pequeño para que se generen varias páginas

//cantidad de enlaces que se mostrarán como máximo en la barra de navegación
$_pagi_nav_num_enlaces 3;//Elegí un número pequeño para que se note el resultado

//Decidimos si queremos que se muesten los errores de mysql
$_pagi_mostrar_errores false;//recomendado true sólo en tiempo de desarrollo.

//Si tenemos una consulta compleja que hace que el Paginator no funcione correctamente, 
//realizamos el conteo alternativo.
$_pagi_conteo_alternativo true;//recomendado false.

//Supongamos que sólo nos interesa propagar estas dos variables
$_pagi_propagar = array("id","termino");//No importa si son POST o GET

//Definimos qué estilo CSS se utilizará para los enlaces de paginación.
//El estilo debe estar definido previamente
$_pagi_nav_estilo "paginacion";

//definimos qué irá en el enlace a la página anterior
$_pagi_nav_anterior "&lt;";// podría ir un tag <img> o lo que sea

//definimos qué irá en el enlace a la página siguiente
$_pagi_nav_siguiente "&gt;";// podría ir un tag <img> o lo que sea

//Incluimos el script de paginación. Éste ya ejecuta la consulta automáticamente
include("paginator.inc.php");

    
//Leemos y escribimos los registros de la página actual
    
while($row mysql_fetch_array($_pagi_result)){

echo 
"<table width=70%><tr bgcolor= #61e877><div align=center>";

                   echo 
"<b>Titulo: </b>";
                   echo 
$row[name];
             echo 
"</div></tr>";
             echo
"<tr>&nbsp;</tr>";
             echo 
"<tr bgcolor= #cccccc><b> &nbsp;&nbsp;&nbsp;Descripcion: </b><br>";

                   echo 
$row[description];
              
              echo 
"</tr>";

            echo
"<tr bgcolor= #cccccc >&nbsp;</tr>";
            echo 
"<tr bgcolor= #cccccc><b> &nbsp;&nbsp;&nbsp;Tamaño: </b>";
              echo 
$row[size]." Bytes";
 
             echo 
"</tr>";


          echo
"<tr bgcolor= #cccccc>&nbsp;</tr>";
           echo 
"<tr bgcolor= #cccccc><div align=center><a href=\"descargar.php?ruta=archivos/$row[ruta]\">Descargar</a></div>"
          echo 
"</tr>";
          echo
"<tr bgcolor= #cccccc>&nbsp;</tr>";

echo 
"</table>" ;

   }

echo 
"<table width=50%><tr bgcolor= #61e877><div align=center>";
//Incluimos la barra de navegación

           
echo"<p>".$_pagi_navegacion."</p>";
           echo 
"</div></tr>";
           echo
"<tr>&nbsp;</tr>";
//Incluimos la información de la página actual

           
echo"<tr><div align=center><p>Resultados ".$_pagi_info."</p></div>";
           echo 
"</tr>";    
echo 
"</table>" ;    
    
        
?>

Última edición por jaronu; 11/10/2008 a las 02:36 Razón: perfeccionar la aplicacion
  #3 (permalink)  
Antiguo 28/02/2008, 09:04
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Aporte: Aplicacion de centro de descargas. parte 3

Código PHP:
y ahora el archivo paginator.inc.php que viene en el incluye del script anterior.
En dos partes estar pendiente de la sintaxis al copiar y pegar

<?
//paginator.inc.php
Variables que se pueden definir antes de incluir el script vía include():
 * ------------------------------------------------------------------------
 * 
$_pagi_sql                     OBLIGATORIA.    CadenaDebe contener una sentencia sql válida (y sin la cláusula "limit").
 
 * 
$_pagi_cuantos                OPCIONAL.        EnteroCantidad de registros que contendrá como máximo cada página.
                                
Por defecto está en 20.
                                            
 
$_pagi_nav_num_enlaces        OPCIONAL        EnteroCantidad de enlaces a los números de página que se mostrarán como 
                                máximo en la barra de navegación
.
                                
Por defecto se muestran todos.
                                            
 * 
$_pagi_mostrar_errores        OPCIONAL        BooleanoDefine si se muestran o no los errores de MySQL que se puedan producir.
                                 
Por defecto está en "true";
                                            
 * 
$_pagi_propagar                OPCIONAL        Array de cadenasContiene los nombres de las variables que se quiere propagar
                                por el url
Por defecto se propagarán todas las que ya vengan por el url (GET).
 * 
$_pagi_conteo_alternativo    OPCIONAL        BooleanoDefine si se utiliza mysql_num_rows() (trueo COUNT(*) (false).
                                
Por defecto está en false.
 * 
$_pagi_separador                OPCIONAL        CadenaCadena que separa los enlaces numéricos en la barra de navegación entre páginas.
                                 
Por defecto se utiliza la cadena " | ".
 * 
$_pagi_nav_estilo            OPCIONAL        CadenaContiene el nombre del estilo CSS para los enlaces de paginación.
                                 
Por defecto no se especifica estilo.
 * 
$_pagi_nav_anterior            OPCIONAL        CadenaContiene lo que debe ir en el enlace a la página anteriorPuede ser un tag <img>.
                                 
Por defecto se utiliza la cadena "&laquo; Anterior".
 * 
$_pagi_nav_siguiente            OPCIONAL        CadenaContiene lo que debe ir en el enlace a la página siguientePuede ser un tag <img>.
                                 
Por defecto se utiliza la cadena "Siguiente &raquo;"
 
$_pagi_nav_primera            OPCIONAL        CadenaContiene lo que debe ir en el enlace a la primera páginaPuede ser un tag <img>.
                                 
Por defecto se utiliza la cadena "&laquo;&laquo; Primera".
 * 
$_pagi_nav_ultima            OPCIONAL        CadenaContiene lo que debe ir en el enlace a la página siguientePuede ser un tag <img>.
                                 
Por defecto se utiliza la cadena "&Uacute;ltima &raquo;&raquo;"
--------------------------------------------------------------------------
*/


/*
 * Verificación de los parámetros obligatorios y opcionales.
 *------------------------------------------------------------------------
 */
 
 
 
 
if(empty($_pagi_sql)){
    
// Si no se definió $_pagi_sql... grave error!
    // Este error se muestra sí o sí (ya que no es un error de mysql)
    
die("<b>Error Paginator : </b>No se ha definido la variable \$_pagi_sql");
 }
 
 if(empty(
$_pagi_cuantos)){
    
// Si no se ha especificado la cantidad de registros por página
    // $_pagi_cuantos será por defecto 20
    
$_pagi_cuantos 20;
 }
 
 if(!isset(
$_pagi_mostrar_errores)){
    
// Si no se ha elegido si se mostrará o no errores
    // $_pagi_errores será por defecto true. (se muestran los errores)
    
$_pagi_mostrar_errores true;
 }

 if(!isset(
$_pagi_conteo_alternativo)){
    
// Si no se ha elegido el tipo de conteo
    // Se realiza el conteo dese mySQL con COUNT(*)
    
$_pagi_conteo_alternativo false;
 }
 
 if(!isset(
$_pagi_separador)){
    
// Si no se ha elegido un separador
    // Se toma el separador por defecto.
    
$_pagi_separador " ][ ";
 }
 
  if(isset(
$_pagi_nav_estilo)){
    
// Si se ha definido un estilo para los enlaces, se genera el atributo "class" para el enlace
    
$_pagi_nav_estilo_mod "class=\"$_pagi_nav_estilo\"";
 }else{
     
// Si no, se utiliza una cadena vacía.
     
$_pagi_nav_estilo_mod "";
 }
 
 if(!isset(
$_pagi_nav_anterior)){
    
// Si no se ha elegido una cadena para el enlace "siguiente"
    // Se toma la cadena por defecto.
    
$_pagi_nav_anterior "&laquo; [Anterior]";
 } 
 
 if(!isset(
$_pagi_nav_siguiente)){
    
// Si no se ha elegido una cadena para el enlace "siguiente"
    // Se toma la cadena por defecto.
    
$_pagi_nav_siguiente "[Siguiente] ;";
 } 

 if(!isset(
$_pagi_nav_primera)){
    
// Si no se ha elegido una cadena para el enlace "primera"
    // Se toma la cadena por defecto.
    
$_pagi_nav_primera "&laquo;&laquo; Primera";
 } 
 
 if(!isset(
$_pagi_nav_ultima)){
    
// Si no se ha elegido una cadena para el enlace "siguiente"
    // Se toma la cadena por defecto.
    
$_pagi_nav_ultima "&Uacute;ltima ] ";
 } 
 
//------------------------------------------------------------------------


/*
 * Establecimiento de la página actual.
 *------------------------------------------------------------------------
 */
 
if (empty($_GET['_pagi_pg'])){
  #4 (permalink)  
Antiguo 28/02/2008, 09:06
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Aporte: Aplicacion de centro de descargas. parte 1

Wow! Ahora sí que llueven los aportes en este foro

Gracias por compartir!

EDITO: Creo que mi mensaje estuvo un poco fuera de lugar (me precipité), hay una última parte de este tuto en el siguiente mensaje

Última edición por okram; 28/02/2008 a las 09:20
  #5 (permalink)  
Antiguo 28/02/2008, 09:06
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Aporte: Aplicacion de centro de descargas. parte 4

Código PHP:
// Si no se ha hecho click a ninguna página específica
    // O sea si es la primera vez que se ejecuta el script
        // $_pagi_actual es la pagina actual-->será por defecto la primera.
    
$_pagi_actual 1;
 }else{
    
// Si se "pidió" una página específica:
    // La página actual será la que se pidió.
        
$_pagi_actual $_GET['_pagi_pg'];
 }
//------------------------------------------------------------------------


/*
 * Establecimiento del número de páginas y del total de registros.
 *------------------------------------------------------------------------
 */
 // Contamos el total de registros en la BD (para saber cuántas páginas serán)
 // La forma de hacer ese conteo dependerá de la variable $_pagi_conteo_alternativo
 
if($_pagi_conteo_alternativo == false){
     
$_pagi_sqlConta eregi_replace("select[[:space:]](.*)[[:space:]]from""SELECT COUNT(*) FROM"$_pagi_sql);
     
$_pagi_result2 mysql_query($_pagi_sqlConta);
    
// Si ocurrió error y mostrar errores está activado
     
if($_pagi_result2 == false && $_pagi_mostrar_errores == true){
        die (
" Error en la consulta de conteo de registros: $_pagi_sqlConta. Mysql dijo: <b>".mysql_error()."</b>");
     }
     
$_pagi_totalReg mysql_result($_pagi_result2,0,0);//total de registros
 
}else{
    
$_pagi_result3 mysql_query($_pagi_sql);
    
// Si ocurrió error y mostrar errores está activado
     
if($_pagi_result3 == false && $_pagi_mostrar_errores == true){
        die (
" Error en la consulta de conteo alternativo de registros: $_pagi_sql. Mysql dijo: <b>".mysql_error()."</b>");
     }
    
$_pagi_totalReg mysql_num_rows($_pagi_result3);
 }
 
// Calculamos el número de páginas (saldrá un decimal)
 // con ceil() redondeamos y $_pagi_totalPags será el número total (entero) de páginas que tendremos
 
$_pagi_totalPags ceil($_pagi_totalReg $_pagi_cuantos);

//------------------------------------------------------------------------


/*
 * Propagación de variables por el URL.
 *------------------------------------------------------------------------
 */
 // La idea es pasar también en los enlaces las variables hayan llegado por url.
 
$_pagi_enlace $_SERVER['PHP_SELF'];
 
$_pagi_query_string "?";
 
 if(!isset(
$_pagi_propagar)){
     
//Si no se definió qué variables propagar, se propagará todo el $_GET (por compatibilidad con versiones anteriores)
    //Perdón... no todo el $_GET. Todo menos la variable _pagi_pg
    
if (isset($_GET['_pagi_pg'])) unset($_GET['_pagi_pg']); // Eliminamos esa variable del $_GET
    
$_pagi_propagar array_keys($_GET);
 }elseif(!
is_array($_pagi_propagar)){
    
// si $_pagi_propagar no es un array... grave error!
    
die("<b>Error Paginator : </b>La variable \$_pagi_propagar debe ser un array");
 }
 
// Este foreach está tomado de la Clase Paginado de webstudio
 // (http://www.forosdelweb.com/showthread.php?t=65528)
 
foreach($_pagi_propagar as $var){
     if(isset(
$GLOBALS[$var])){
        
// Si la variable es global al script
        
$_pagi_query_string.= $var."=".$GLOBALS[$var]."&";
    }elseif(isset(
$_REQUEST[$var])){
        
// Si no es global (o register globals está en OFF)
        
$_pagi_query_string.= $var."=".$_REQUEST[$var]."&";
    }
 }

 
// Añadimos el query string a la url.
 
$_pagi_enlace .= $_pagi_query_string;
 
//------------------------------------------------------------------------


/*
 * Generación de los enlaces de paginación.
 *------------------------------------------------------------------------
 */
 // La variable $_pagi_navegacion contendrá los enlaces a las páginas.
 
$_pagi_navegacion_temporal = array();
 if (
$_pagi_actual != 1){
    
// Si no estamos en la página 1. Ponemos el enlace "primera"
    
$_pagi_url 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_primera</a>";

    
// Si no estamos en la página 1. Ponemos el enlace "anterior"
    
$_pagi_url $_pagi_actual 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_anterior</a>";
 }
 
 
// La variable $_pagi_nav_num_enlaces sirve para definir cuántos enlaces con 
 // números de página se mostrarán como máximo.
 // Ojo: siempre se mostrará un número impar de enlaces. Más info en la documentación.
 
 
if(!isset($_pagi_nav_num_enlaces)){
    
// Si no se definió la variable $_pagi_nav_num_enlaces
    // Se asume que se mostrarán todos los números de página en los enlaces.
    
$_pagi_nav_desde 1;//Desde la primera
    
$_pagi_nav_hasta $_pagi_totalPags;//hasta la última
 
}else{
    
// Si se definió la variable $_pagi_nav_num_enlaces
    // Calculamos el intervalo para restar y sumar a partir de la página actual
    
$_pagi_nav_intervalo ceil($_pagi_nav_num_enlaces/2) - 1;
    
    
// Calculamos desde qué número de página se mostrará
    
$_pagi_nav_desde $_pagi_actual $_pagi_nav_intervalo;
    
// Calculamos hasta qué número de página se mostrará
    
$_pagi_nav_hasta $_pagi_actual $_pagi_nav_intervalo;
    
    
// Ajustamos los valores anteriores en caso sean resultados no válidos
    
    // Si $_pagi_nav_desde es un número negativo
    
if($_pagi_nav_desde 1){
        
// Le sumamos la cantidad sobrante al final para mantener el número de enlaces que se quiere mostrar. 
        
$_pagi_nav_hasta -= ($_pagi_nav_desde 1);
        
// Establecemos $_pagi_nav_desde como 1.
        
$_pagi_nav_desde 1;
    }
    
// Si $_pagi_nav_hasta es un número mayor que el total de páginas
    
if($_pagi_nav_hasta $_pagi_totalPags){
        
// Le restamos la cantidad excedida al comienzo para mantener el número de enlaces que se quiere mostrar.
        
$_pagi_nav_desde -= ($_pagi_nav_hasta $_pagi_totalPags);
        
// Establecemos $_pagi_nav_hasta como el total de páginas.
        
$_pagi_nav_hasta $_pagi_totalPags;
        
// Hacemos el último ajuste verificando que al cambiar $_pagi_nav_desde no haya quedado con un valor no válido.
        
if($_pagi_nav_desde 1){
            
$_pagi_nav_desde 1;
        }
    }
 }

 for (
$_pagi_i $_pagi_nav_desde$_pagi_i<=$_pagi_nav_hasta$_pagi_i++){//Desde página 1 hasta última página ($_pagi_totalPags)
    
if ($_pagi_i == $_pagi_actual) {
        
// Si el número de página es la actual ($_pagi_actual). Se escribe el número, pero sin enlace y en negrita.
        
$_pagi_navegacion_temporal[] = "<span ".$_pagi_nav_estilo_mod.">$_pagi_i</span>";
    }else{
        
// Si es cualquier otro. Se escibe el enlace a dicho número de página.
        
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_i."'>".$_pagi_i."</a>";
    }
 }

 if (
$_pagi_actual $_pagi_totalPags){
    
// Si no estamos en la última página. Ponemos el enlace "Siguiente"
    
$_pagi_url $_pagi_actual 1//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_siguiente</a>";

    
// Si no estamos en la última página. Ponemos el enlace "Última"
    
$_pagi_url $_pagi_totalPags//será el número de página al que enlazamos
    
$_pagi_navegacion_temporal[] = "<a ".$_pagi_nav_estilo_mod." href='".$_pagi_enlace."_pagi_pg=".$_pagi_url."'>$_pagi_nav_ultima</a>";
 }
 
$_pagi_navegacion implode($_pagi_separador$_pagi_navegacion_temporal);

//------------------------------------------------------------------------


/*
 * Obtención de los registros que se mostrarán en la página actual.
 *------------------------------------------------------------------------
 */
 // Calculamos desde qué registro se mostrará en esta página
 // Recordemos que el conteo empieza desde CERO.
 
$_pagi_inicial = ($_pagi_actual-1) * $_pagi_cuantos;
 
 
// Consulta SQL. Devuelve $cantidad registros empezando desde $_pagi_inicial
 
$_pagi_sqlLim $_pagi_sql." LIMIT $_pagi_inicial,$_pagi_cuantos";
 
$_pagi_result mysql_query($_pagi_sqlLim);
 
// Si ocurrió error y mostrar errores está activado
 
if($_pagi_result == false && $_pagi_mostrar_errores == true){
     die (
"Error en la consulta limitada: $_pagi_sqlLim. Mysql dijo: <b>".mysql_error()."</b>");
 }

//------------------------------------------------------------------------


/*
 * Generación de la información sobre los registros mostrados.
 *------------------------------------------------------------------------
 */
 // Número del primer registro de la página actual
 
$_pagi_desde $_pagi_inicial 1;
 
 
// Número del último registro de la página actual
 
$_pagi_hasta $_pagi_inicial $_pagi_cuantos;
 if(
$_pagi_hasta $_pagi_totalReg){
     
// Si estamos en la última página
    // El ultimo registro de la página actual será igual al número de registros.
     
$_pagi_hasta $_pagi_totalReg;
 }
 
 
$_pagi_info "del <b>$_pagi_desde</b> al <b>$_pagi_hasta</b> de <b>$_pagi_totalReg</b>";

//------------------------------------------------------------------------


/**
 * Variables que quedan disponibles después de incluir el script vía include():
 * ------------------------------------------------------------------------
 
 * $_pagi_result        Identificador del resultado de la consulta a la BD para los registros de la página actual. 
                 Listo para ser "pasado" por una función como mysql_fetch_row(), mysql_fetch_array(), 
                mysql_fetch_assoc(), etc.
                            
 * $_pagi_navegacion        Cadena que contiene la barra de navegación con los enlaces a las diferentes páginas.
                 Ejemplo: "<<primera | <anterior | 1 | 2 | 3 | 4 | siguiente> | última>>".
                            
 * $_pagi_info            Cadena que contiene información sobre los registros de la página actual.
                 Ejemplo: "desde el 16 hasta el 30 de un total de 123";                

*/
?> 
  #6 (permalink)  
Antiguo 28/02/2008, 09:07
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Aporte: Aplicacion de centro de descargas. parte 5 ultima

Y ahora el archivo que procesa la desgarga del archivo llamalo descargar.php

Código PHP:
<?php $ruta $_GET['ruta'];
$archivo_arr explode"/"$ruta );
$archivo $archivo_arr[count($archivo_arr) - 1];

if( !
file_exists$ruta ) ) {
         die( 
"No existe $ruta" );
}

header"Content-Disposition: attachment; filename=".$archivo."");
header"Content-type: application/octet-stream" ); 
header("Content-Length: ".filesize($ruta)); //header que envia al navegador el tamaño del archivo.

@readfile$ruta );  
?>
Y con esto creo que ya esta. Espero que os funcione a mi me va muy bien.
Un Saludo a todos.
Y visitar http://www.tuboolar-web.com

NOTA. Para subir archivos grandes has de cambiar algunos parámetros de tu php.ini
Si trabajas en local y si no habras de ponerte en contacto con tu hosting para que te lo cambien ellos.
Estos son los parámetros a cambiar:

file_uploads = On // en On

max_execution_time = 500 // los segundos que consideren

max_input_time = 500// los segundos que consideren

memory_limit = 50M // por lo regular el mismo tamaño del archivo a subir o quizas mas

upload_tmp_dir = /xyz // su directorio temporal con permisos de R/W

post_max_size = 50M // el tamaño maximo de su archivo a subir

upload_max_filesize = 50M // el tamaño maximo de su archivo a subir

Última edición por jaronu; 15/11/2008 a las 15:10
  #7 (permalink)  
Antiguo 23/03/2008, 15:38
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Re: Aporte: Aplicacion de centro de descargas. parte 1

Muy bueno.
__________________
Half Music - www.halfmusic.com
  #8 (permalink)  
Antiguo 01/04/2008, 03:26
 
Fecha de Ingreso: octubre-2007
Mensajes: 4
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Aporte: Aplicacion de centro de descargas. parte 1

gran aporte!! lo voy a utilizar y despues te cuento

saludos!!!
  #9 (permalink)  
Antiguo 18/04/2008, 19:05
 
Fecha de Ingreso: agosto-2005
Mensajes: 18
Antigüedad: 18 años, 7 meses
Puntos: 1
De acuerdo Re: Aporte: Aplicacion de centro de descargas. parte 1

ok deja lo prueba y te digo como me va
  #10 (permalink)  
Antiguo 05/05/2008, 15:56
 
Fecha de Ingreso: mayo-2008
Ubicación: Milano, IT.
Mensajes: 12
Antigüedad: 15 años, 11 meses
Puntos: 0
Re: Aporte: Aplicacion de centro de descargas. parte 1

NO hay Un ejemplo de como funciona esta Aplicacion ?
  #11 (permalink)  
Antiguo 03/06/2008, 06:05
 
Fecha de Ingreso: abril-2008
Mensajes: 143
Antigüedad: 16 años
Puntos: 0
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Al intentar introducir imagenes con el primer script me da el siguiente error:

Warning: move_uploaded_file(/imagenes/foto.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\AppServ\www\subir_archivos.php on line 9

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:\WINDOWS\Temp\phpA9C.tmp' to '/imagenes/foto.jpg' in C:\AppServ\www\subir_archivos.php on line 9


Alguien sabe porque es?
(estoy trabajando en local)
  #12 (permalink)  
Antiguo 03/06/2008, 06:58
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

mira que existan los directorios y que tengas permisos 777 en las carpetas
  #13 (permalink)  
Antiguo 03/06/2008, 11:06
 
Fecha de Ingreso: abril-2008
Mensajes: 143
Antigüedad: 16 años
Puntos: 0
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Cita:
Iniciado por jaronu Ver Mensaje
mira que existan los directorios y que tengas permisos 777 en las carpetas
thanks! eso era!
  #14 (permalink)  
Antiguo 03/06/2008, 17:41
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Hola... ami me da el siguiente error...


Warning: move_uploaded_file(../cevit/archivos/cuadradito.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in C:\servidor\web\EXTENDED_COLLEGE\edicion\subir_arc hivos.php on line 11

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'C:/Servidor/PHP/upload/\php2A0.tmp' to '../cevit/archivos/cuadradito.jpg' in C:\servidor\web\EXTENDED_COLLEGE\edicion\subir_arc hivos.php on line 11

(EDITADO: )

tema solucioando era que no tenia los direcorios creados... und escuido tonto...

(EDITADO DE NUEVO ):

cuando nos es una imgen lo que se sube, y por ejemplo en mi caso probe con un archivo flv... cuando lo descarga lo descarga sin extension....

como puedo solucionar eso... o sea un archivo que lo guardo como video.flv cuando hace la descarga lo deja como video (FILE)

Última edición por cmarrero; 03/06/2008 a las 18:02
  #15 (permalink)  
Antiguo 03/06/2008, 18:44
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Y en la Base de datos en el campo de la ruta, alli te aparece la extension???
  #16 (permalink)  
Antiguo 03/06/2008, 18:49
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

acabo de hacer una prueba porque me extrañaba, he subido un archivo .flv y cuando lo he descargardo y le he dado a guardar, lo guardaba bien, con la extension.flv

revisa que no te dejaras algo y si no vuelve a postear

Un saludo
  #17 (permalink)  
Antiguo 04/06/2008, 05:56
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

lo hice de nuevo una y otra vez....

Mi archvo flv se llama "canary - YouTube.flv"...

cuando lo sube, en la BD sale la extencion... pero cuando le doy descargar lo guarda sin la extencion... probe con diferentes archivos...

Me fije leyendo todos los scripts por si las dudas, pero estat odo bien, y ya tengo todo bien configurado, pero el problema continua..

Saludos

(EDITADO:)

Bueno, tengo una consulta con respecto a esto...

esto me interesaba para poder hacer video streaming... fijate que cunando le pongo en el contentPath del FLVplayBack de flash "descargas?ruta=archivos/canary - YouTube.flv" lo puedo ver sin problemas...

pero claro, la idea es clikear en el link ver video (que seria el de descargar de tu script) y que habra el flash con el video... pero si en el contentPath del FLVplayback le meto descargas?ruta=archivos/$row[ruta] obviamente no me lo va a tomar....

Como puedo solucionar esto... que le deberia poner el contenthPath para que funcione bien..

Gracias

Última edición por cmarrero; 04/06/2008 a las 06:01
  #18 (permalink)  
Antiguo 04/06/2008, 07:26
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

no se bien a que te refieres,

postea como te quedo el script para subir los videos y el script que procesa la descarga

Un saludo
  #19 (permalink)  
Antiguo 04/06/2008, 07:48
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

El problema son los espcaios... por lo que estube viendo me baja el archivo pero me corta el nombre al primer espacio encontrado...

El archivo descargas no lo modifique...

....

Mi incomveniente ahora, es recivir el link de listar_archivos.php que envia ruta=$row[ruta]-- en el contentPath del FLVplayback...

Si sabes como hacer plis dame una ayudita...

Saludos
  #20 (permalink)  
Antiguo 04/06/2008, 10:46
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Hola de nuevo,

en el archivo que procesa la descarga del archivo deberias de incluir estas lineas, para quitar los espàcios del nombre:

Código PHP:
// 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=\"".$uploadfile."\">".$_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>"
  #21 (permalink)  
Antiguo 20/07/2008, 11:55
Avatar de Fusionpy  
Fecha de Ingreso: marzo-2008
Mensajes: 5
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

el primer script, como puedo limitar el tamaño del gráfico para subir.

Gracias
  #22 (permalink)  
Antiguo 20/07/2008, 12:30
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 11 meses
Puntos: 11
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Cita:
Iniciado por Fusionpy Ver Mensaje
el primer script, como puedo limitar el tamaño del gráfico para subir.

Gracias
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'])) { 
     
     
$tamaño_maximo 1024*1024 //Lo que tu quieras en bytes
     
$tamaño_uploaded filesize($_FILES['fichero']['tmp_name'])
  
     if(
$tamaño_uploaded $tamaño_maximo)
     {
        
//El tamaño fue excedido, haz lo que creas necesario
     
}
.
.
.
//continua el programa
  #23 (permalink)  
Antiguo 25/08/2008, 06:29
 
Fecha de Ingreso: abril-2007
Mensajes: 21
Antigüedad: 17 años
Puntos: 0
Respuesta: VER LA IMAGEN

Hola Jaromu...que tal...muy bueno tu aporte...
Estaba practicando...y lo que yo queria lograr era mostrar los datos con la imagen.....
Pero no logro solo me muestra los datos..y en lugar de la imagen el cuadradito con la cruz....
Me podes ayudar con esto...
Gracias desde ya...
SALUDOS
  #24 (permalink)  
Antiguo 10/10/2008, 21:58
 
Fecha de Ingreso: octubre-2008
Mensajes: 1
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Hola, estuve leyendo tu aporte y la verdad esta de lujo, solo que hay algo q quiero saber, existe alguna forma para saber cuando el navegar ha terminado la descarga, osea quiero saber si el usuario descargo el archivo bien lo bloquee y si no lo ha terminado lo pueda descargar sin problema hasta que lo descargue bien.
  #25 (permalink)  
Antiguo 11/10/2008, 02:20
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Pues no lo se, eso parece mas de lenguajes del lado del cliente como javascript, imagino que con php no se puede controlar el navegador del cliente para saber si termino la descarga,
y tambien parecen cosas del estilo P2P como emule, son descargas directas, claro que se puede cortar la descarga y que el usuario tenga que descargarse de nuevo el archivo, pero creo que eso con PHP no se puede soluciona.

si no algun experto de verdad del foro que nos saque de dudas.

Un saludo
  #26 (permalink)  
Antiguo 11/10/2008, 13:13
Avatar de SpiderNet  
Fecha de Ingreso: agosto-2008
Ubicación: Venezuela
Mensajes: 29
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Cita:
Iniciado por jaronu Ver Mensaje
Hola de nuevo,

en el archivo que procesa la descarga del archivo deberias de incluir estas lineas, para quitar los espàcios del nombre:
Lo que hay que agregarle al codigo para eliminar los espacios esta bien, pero....

Si yo quiero que mi archivo se grabe tal cual como yo lo tengo nombrado en mi Pc, con espacios y todo. Como debería hacerse???

Con agregarle unas comillas no sería suficiente

archivo:subir_archivos.php
Código:
//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/"; 
        if(move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta_destino . "$_FILES['fichero']['name']"))  // AQUI LAS COMILLAS 
		{ 
		    // se coloca en su lugar final 
...

No lo he probado por que recien estoy copiando y pegando el codigo. Pero tengo esta curiosidad.


Saludos!!!
  #27 (permalink)  
Antiguo 11/10/2008, 13:29
Avatar de SpiderNet  
Fecha de Ingreso: agosto-2008
Ubicación: Venezuela
Mensajes: 29
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Al crear la tabla desd phpadmin me da el siguiente error



Cree un archivo al que llame descargas.sql. Alli pegue lainstrucciones descritas al inicio de este post para crear la tabla.

Previamente ya habia creado la base de datos a la que llame registro.

A que se debe este error???


EDITADO
La imagen al parecer no se ve muy bien. Abajo lo que dice es....
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 8
  #28 (permalink)  
Antiguo 11/10/2008, 16:53
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

cual es la linea 8??
  #29 (permalink)  
Antiguo 17/10/2008, 08:21
 
Fecha de Ingreso: agosto-2006
Mensajes: 1
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

eliminar por favor

Última edición por Matraka; 07/12/2008 a las 14:49
  #30 (permalink)  
Antiguo 15/11/2008, 14:42
 
Fecha de Ingreso: octubre-2008
Mensajes: 4
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Aporte: Aplicacion de centro de descargas. parte 1

Saludos,
tengo un problema con estos codigos. La aplicacion Sube los archivos sin ningun Problema, pero cuando trato de bajarlos, me baja solo archivos de 1kb (nulos).
E revisado el codigo y no puedo encontrar una diferencia entre lo que aqui esta posteado y lo que yo tengo, no se a que se debe, puede alguien ayudarme.. plisss!!!
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

SíEste tema le ha gustado a 9 personas




La zona horaria es GMT -6. Ahora son las 07:32.