Foros del Web » Programando para Internet » PHP »

Subir y bajar archivos desde la base de datos con PHP

Estas en el tema de Subir y bajar archivos desde la base de datos con PHP en el foro de PHP en Foros del Web. Estimada comunidad, junto con saludarles, les comento: Deseo hacer una página, la cual me pertima subir archivos de tipo .rar o .zip, con algunos datos ...
  #1 (permalink)  
Antiguo 20/03/2010, 21:38
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 1 mes
Puntos: 0
Subir y bajar archivos desde la base de datos con PHP

Estimada comunidad, junto con saludarles, les comento:
Deseo hacer una página, la cual me pertima subir archivos de tipo .rar o .zip, con algunos datos como el nombre y fecha, pero guardar estos archivos en una base de datos, es decir, el campo para los archivos .rar o .zip son del tipo MediumBlob.

Tomé un codigo que utilice para subir imagenes, y me anda bien, es decir, puedo subir los archivos con sus datos a la base de datos, tambien tengo la pagina que hace la consulta a dicha base de datos y me genera una lista de estos para que sean descargados, el problema esta, en que cuando le doy descargar, en vez de mostrar por ejemplo : NombreDelArchivo.RAR preguntandome donde deseo guardarlo, me muestra para guardar la pagina PHP de descargar, es decir, descargar.php , algo esta fallando en cuanto a la descarga de los archivos.
LEs dejo el link para que puedan chequear lo que digo: http://www.labunab.com/listar_archivos.php

Aqui van los codigos que estoy utilizando:

Formulario:
Código HTML:
<form enctype="multipart/form-data" action="guardar_archivo.php" method="post">
Descripción <input type="text" name="titulo" size="30">
Ubicación <input type="file" name="archivito">
<input type="submit" value="Enviar archivo">
</form> 
Pagina Guardar_archivo.php
Código PHP:
<?php 
$conn 
mysql_connect("localhost","xxx","xxx"); 
mysql_select_db("xxx");

$archivo $_FILES["archivito"]["tmp_name"]; 
$tamanio $_FILES["archivito"]["size"];
$tipo    $_FILES["archivito"]["type"];
$nombre  $_FILES["archivito"]["name"];
$titulo  $_POST["titulo"];

 if ( 
$archivo != "none" )
 {
    
$fp fopen($archivo"rb");
    
$contenido fread($fp$tamanio);
    
$contenido addslashes($contenido);
    
fclose($fp); 

    
$qry "INSERT INTO archivo VALUES 
            (0,'$nombre','$titulo','$contenido','$tipo')"
;

    
mysql_query($qry);

    if(
mysql_affected_rows($conn) > 0)
       print 
"Se ha guardado el archivo en la base de datos.";
    else
       print 
"NO se ha podido guardar el archivo en la base de datos.";
 }
 else
    print 
"No se ha podido subir el archivo al servidor";
?>
Luego para listar los archivos subidos listar_archivos.php:

Código PHP:
<?php 
$conn 
mysql_connect("xxx","xxx","xxx"); 
mysql_select_db("xxx");

$qry "SELECT id, nombre, titulo, tipo FROM archivo";
$res mysql_query($qry);

while(
$fila mysql_fetch_array($res))
{
print 
"$fila[titulo]
<br>
$fila[nombre] ($fila[tipo])
<br>
<a href='descargar_archivo.php?id=$fila[id]'>Descargar</a>
<br>
<br>"
;
}
?>
Luego la pagina que llama la pagina anterior para descargar un archivo seleccionado descagar_archivo.php :

Código PHP:
<?
$conn 
mysql_connect("xxx","lxxx","xxx"); 
mysql_select_db("xxx");

$id $_GET['id']; 
$qry "SELECT tipo, contenido, nombre FROM archivo WHERE id=$id";
$res mysql_query($qry);
$tipo mysql_result($res0"tipo");
$contenido mysql_result($res0"contenido");
$nombre mysql_result($res0"nombre");

 
header("Content-type: $tipo");
 print 
$contenido
?>
Espero puedan ayudarme.
  #2 (permalink)  
Antiguo 20/03/2010, 23:41
Avatar de TolerantX  
Fecha de Ingreso: marzo-2006
Ubicación: Guadalajara, México.
Mensajes: 408
Antigüedad: 18 años
Puntos: 10
Respuesta: Subir y bajar archivos desde la base de datos con PHP

Acabo de entrar a la página que dices y se descarga los archivos bien. Supongo que ya resolviste el problema :P
__________________
TolerantX
http://tolerantx.com
Linux User #385226
  #3 (permalink)  
Antiguo 21/03/2010, 00:58
 
Fecha de Ingreso: febrero-2010
Mensajes: 24
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Subir y bajar archivos desde la base de datos con PHP

Cita:
Iniciado por TolerantX Ver Mensaje
Acabo de entrar a la página que dices y se descarga los archivos bien. Supongo que ya resolviste el problema :P
Así es, ya lo solucione, el archivo descarga_archivos.php quedaria de la sgte forma:

Código PHP:
<?
$conn 
mysql_connect("xxx","xxx","xxx"); 
mysql_select_db("xxx");

$extenciones = array("application/msword"=>"doc","application/pdf"=>"pdf","image/jpeg"=>"jpg""application/rar"=>"rar");
$id $_GET['id']; 
$qry "SELECT tipo, contenido, nombre FROM archivo WHERE id=$id";
$res mysql_query($qry);
$tipo mysql_result($res0"tipo");
$contenido mysql_result($res0"contenido");
$nombre mysql_result($res0"nombre");

 
header("Content-type: $tipo");
 
header('Content-disposition: attachment; filename="'.$nombre.'.'.$extenciones[$type].'"'); 
 echo 
$contenido
?>
Asi al principio especifico las extensiones de cada archivo, y luego al final del codigo, tomo el nombre del archivo que tiene en la base de datos y le agrego la extension, asi queda tal cual como esta guardado y se soluciona elproblema, espero les sirva a alguien mas el codigo.
Saludos y gracias.
  #4 (permalink)  
Antiguo 09/10/2013, 14:12
 
Fecha de Ingreso: octubre-2013
Mensajes: 2
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Subir y bajar archivos desde la base de datos con PHP

Amigo, necesito hacer lo mismo

Me puedes decir como creaste tu base de datos y tu tabla, para hacer lo mismo

Gracias
  #5 (permalink)  
Antiguo 10/11/2013, 15:46
 
Fecha de Ingreso: noviembre-2013
Mensajes: 2
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Subir y bajar archivos desde la base de datos con PHP

amigo seria tan amable de mostrarme la tabla archivo como la creoo

Etiquetas: bajar, subir
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 1 personas




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