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($fp, filesize($_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>
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($res, 0, "tipo");
$contenido = mysql_result($res, 0, "contenido");
$nombre= mysql_result($res, 0, "nombre");
mysql_close($link);
header("Content-type: $tipo");
header("Content-Disposition: ; filename=\"$nombre\"");
print $contenido;
?>
Código PHP:
CREATE TABLE `imagenes` (
`id` int(11) NOT NULL auto_increment,
`nombre` varchar(30) NOT NULL default '',
`tipo` varchar(30) NOT NULL default '',
`descripcion` varchar(255) NOT NULL default '',
`fecha` varchar(255) NOT NULL default '',
`ip` varchar(255) NOT NULL default '',
`imagen` mediumblob 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!