Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/06/2012, 10:41
Avatar de calakra
calakra
 
Fecha de Ingreso: septiembre-2009
Mensajes: 182
Antigüedad: 14 años, 8 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!