Foros del Web » Programando para Internet » PHP »

descarga de archivos

Estas en el tema de descarga de archivos en el foro de PHP en Foros del Web. Uso este código: <? extract ($_GET); $db = @mysql_connect(localhost,"","") or die("Can't connect to server."); @mysql_select_db("pruebas", $db) or die("Can't select database."); $get_apuntes = "SELECT apuntes, 'txt' ...
  #1 (permalink)  
Antiguo 02/12/2003, 12:08
 
Fecha de Ingreso: octubre-2003
Mensajes: 35
Antigüedad: 20 años, 5 meses
Puntos: 0
Pregunta descarga de archivos

Uso este código:

<?
extract ($_GET);
$db = @mysql_connect(localhost,"","") or die("Can't connect to server.");
@mysql_select_db("pruebas", $db) or die("Can't select database.");
$get_apuntes = "SELECT apuntes, 'txt' AS filetype FROM apuntes WHERE id_apuntes = $id_apuntes";
$get_apuntes_result = @mysql_query($get_apuntes) or die("Couldn't get image.");
$binary_junk = @mysql_result ($get_apuntes_result,0,"apuntes");
$filetype = @mysql_result ($get_apuntes_result,0,"filetype");
header("Content-type: $filetype");
print "$binary_junk";
mysql_close()
?>

me descarga, pero me surgen varios problemas:
- cuando me sale la ventana de descargar, en vez de ponerme el nombre del archivo, me pone el nombre de la pagina.
- meta el archivo q meta en la base de datos, cuando lo he descargado me lo indica como txt, y si por ejemplo es una imagen y lo abro con un programa especifico de imagenes, funciona bien, si es un zip, y lo abro con el winzip, tb funciona... El caso es que cuando lo descargo me lo indica como txt, y me gustaria q con solo hacer doble click, me lo abriera correctamente.

No se si hay q usar mas cabeceras.

Gracias a todos.
  #2 (permalink)  
Antiguo 02/12/2003, 12:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No sé como será el código que usas para subir la imagen a tu BD (en binario) .. supongo que guardará el formato MIME que corresponde al archivo en el campo 'filetype' .. Si es así .. sólo tienes que "quitar" ese "forzado" que se está haciendo al archivo en la sentencia SQL: ('txt' AS filetype)

$get_apuntes = "SELECT apuntes, 'txt' AS filetype FROM apuntes WHERE id_apuntes = $id_apuntes";

Quedaría:
Código PHP:
$get_apuntes "SELECT apuntes, filetype FROM apuntes WHERE id_apuntes = $id_apuntes"
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 02/12/2003, 15:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Para especificar el nombre del fichero:
Código PHP:
header("Content-Disposition: attachment; filename=\"fichero.ext\""); 
Y por cierto, 'txt' no es un tipo MIME valido. Si tienes instalado en local el Apache, tiene un fichero en Apache/conf llamado mime.types con algunos de los tipos MIME correspondientes a algunas extensiones.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 04/12/2003, 10:31
 
Fecha de Ingreso: octubre-2003
Mensajes: 35
Antigüedad: 20 años, 5 meses
Puntos: 0
Gracias, ya lo solucioné. He guardado en la base de datos el nombre y la extension del archivo:

<?
extract ($_GET);
$db = @mysql_connect(localhost,"","") or die("Can't connect to server.");
@mysql_select_db("pruebas", $db) or die("Can't select database.");
$get_apuntes = "SELECT apuntes,archivo,extension AS filetype FROM apuntes WHERE id_apuntes = $id_apuntes";
$comp=mysql_db_query("pruebas",$get_apuntes);
$row=mysql_fetch_array($comp);

$binary=$row["apuntes"];
$filetype=$row["filetype"];
$nombre=$row["archivo"];

header("Content-type: $filetype");
header("Content-Disposition: $filetype; filename=\"$nombre.$filetype\"");

print "$binary";
mysql_close()
?>

Gracias a todos.
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 13:25.