Foros del Web » Programando para Internet » PHP »

descarga archivos desde la base de datos

Estas en el tema de descarga archivos desde la base de datos en el foro de PHP en Foros del Web. Hola a todos. Tengo un problemita el cual explicaré a continuación. Tengo una tabla en la cual inserto archivos ya sea imagenes, ejecutables, texto... El ...
  #1 (permalink)  
Antiguo 07/06/2012, 10:41
Avatar de calakra  
Fecha de Ingreso: septiembre-2009
Mensajes: 182
Antigüedad: 14 años, 7 meses
Puntos: 0
descarga archivos desde la base de datos

Hola a todos.

Tengo un problemita el cual explicaré a continuación.

Tengo una tabla en la cual inserto archivos ya sea imagenes, ejecutables, texto...
El problema esta en que cuando esta cargada una imagen no la descarga y me sale el siguiente error "no se puede mostrar la imagen 'ruta del error ' por que contiene errorres."

Cuando quiero descargar un archivo de texto me muestra el texto en pantalla

Y cuando quiero cargar un archivo (ejecutable) sale que no lo puede cagar.

lo que quiero es, descargar el archivo sin importar que tipo de dato sea, si es una imagen, que lo descargue, si es un exto que lo descargue.


y claro que cargue todo tipo de archivos.


les dejo los codigos que encontré y estoy usando


Para la carga del archivo
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<?php
   
include 'inc/conection.php';
if (isset(
$_POST['enviar'])) {
    
//$tipos = array("image/gif","image/jpeg","image/bmp","image/pjpeg");
    //$maximo = 102400; //100Kb
    
if (is_uploaded_file($_FILES['archivo']['tmp_name'])) { // Se ha subido?
      // if (in_array($_FILES['archivo']['type'],$tipos) && $_FILES['archivo']['size'] <= $maximo) { // Es correcto?
         
         
if($_FILES['archivo']['size']>0){ //verifico si el archivo es valido
            
$fp fopen($_FILES['archivo']['tmp_name'], 'r'); //Abrimos la archivo
            
$archivo fread($fpfilesize($_FILES['archivo']['tmp_name'])); //Extraemos el contenido de la archivo
            
$archivo addslashes($archivo);
            
fclose($fp); //Cerramos archivo
            
$link=Conectarse();
            if(!
get_magic_quotes_gpc())    $nombre addslashes($_FILES['archivo']['name']); // Arreglamos el Nombre
            
            
else $nombre $_FILES['archivo']['name'];
            
$query "INSERT INTO `imagenes` (imagen,nombre,tipo,descripcion,fecha,ip) VALUES ";
            
$query.= "('".$archivo."','".$nombre."','".$_FILES['archivo']['type']."','";
            
$query.= mysql_real_escape_string($_POST['descripcion'])."','";
            
$query.= date("d/m/y",time())."','".$_SERVER['REMOTE_ADDR']."')";    
            
            
//if (mysql_query($query)) echo '<img src="visor.php?mostrar='.mysql_insert_id().'">';
            //else echo mysql_error();    
            
                    
                    
$result=mysql_query($query,$link)or die("mensaje de error".mysql_error());
                    
                    
mysql_close($link);
         }           
      
//  } else echo "El formato del archivo no es correcto o es mayor de 100Kb";
    
} else echo "no es valido";
}
//Desconexion DB
?>
<form enctype="multipart/form-data" method="POST">
archivo: <input type="file" name="archivo" /><br />
Breve Descripcion: <input type="text" name="descripcion" /> <i>(Opcional)</i><br /><br />
<input type="submit" name="enviar" value="Enviar" />
</form>
Cuando quiero cargar el archivo (ejecutable) tuena en la parte
is_uploaded_file($_FILES['archivo']['tmp_name'])


Para la descarga del arvhivo
Código PHP:
<?php 
 
include 'inc/conection.php';
        
$link=Conectarse();
        




$qry "SELECT tipo, imagen as contenido, nombre FROM imagenes WHERE id=".$_GET['id']."";
$res mysql_query($qry);
$tipo mysql_result($res0"tipo");
$contenido mysql_result($res0"contenido");
$nombremysql_result($res0"nombre");

        
mysql_close($link);
header("Content-type: $tipo");
header("Content-Disposition: ; filename=\"$nombre\"");
print 
$contenido

?>
tabla
Código PHP:
CREATE TABLE `imagenes` (
  `
idint(11NOT NULL auto_increment,
  `
nombrevarchar(30NOT NULL default '',
  `
tipovarchar(30NOT NULL default '',
  `
descripcionvarchar(255NOT NULL default '',
  `
fechavarchar(255NOT NULL default '',
  `
ipvarchar(255NOT NULL default '',
  `
imagenmediumblob NOT NULL,
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1

Tengo debian, php 5 mysql 5, apache 2.

Espero me puedan hechar la manita y gracias!
  #2 (permalink)  
Antiguo 07/06/2012, 14:45
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 12 años, 5 meses
Puntos: 160
Respuesta: descarga archivos desde la base de datos

Obligalo a que lo baje, agregale esto al header:

Código PHP:
Ver original
  1. header("Content-Disposition: attachment; filename=ruta_al_archivo");
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 07/06/2012, 15:47
Avatar de calakra  
Fecha de Ingreso: septiembre-2009
Mensajes: 182
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: descarga archivos desde la base de datos

Muchas gracias por contestar!!

Pero tengo un problema con la carga de archivos, y esque no los guarda bien, he subido un excel y al bajarlo no lo abre, un rar y pasa lo mismo, no lo abre.

¿Que es mas facil? guardar el archivo directamente el en servidor o en la base de datos?

ya que tambien cuando intento guardar archivos pesados no los guarda, que es lo que me peuden recomendar??? espero me puedan a yudar!!!

Gracias!!!
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




La zona horaria es GMT -6. Ahora son las 23:17.