Comunidad de diseño web y desarrollo en internet online

FLAH - PHP no funciona la descarga de 1 archivo

Citar            
MensajeEscrito el 16 Nov 2005 04:42 pm
Quiero descargar un archivo del servidor mediante un botón en flash mx 2004.

Para ello hago lo siguiente:

-En flash, tengo un botón que envia mediante getURL:

Código :

getURL("descargar.php?id=archivo.mp3", _blank);


Y en el archivo php descargar.php está el siguiente código:

Código :

<?php
$id = $_POST['id'];
$bajar = $id;
header ("Content-Disposition: attachment; filename=".$id."\n\n");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($bajar));
readfile($bajar);
?> 


Cuando ejecuto el archivo en localhost, lo que se intenta descargar en el archivo descargar.php

Qué es lo que me dejo para que coga el id y no el propio archivo que con tiene el script?

:?

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 16 Nov 2005 04:56 pm
Bueno haciendo más pruebas, aunque sin comprender nada, me ocurre lo siguiente:

si le quito la línea:

Código :

$id = $_POST['id'];


al código php, funciona con Firefox!!! :)

No sé por que, aunque con el Maligno no!!! :shock:

Con IE me sale:

"no se puede encontrar la página... bla bla"
y cuandole das a F5 (actualizar, tal como te aconsejan en el MIE) entonces si aparece.
mostrando en la dirección url:

Código :

http://localhost/proves/bajar.php?id=archivo.mp3



:? :?

Alguna sugerencia para arreglar este lio?

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 16 Nov 2005 05:00 pm
yo sigo recorriendo tus mensajes para ver por fin tu nuevo avatar "tio cosa".

Por Coyr

Claber

1048 de clabLevel

2 tutoriales

 

Manizales city

firefox
Citar            
MensajeEscrito el 16 Nov 2005 05:03 pm
pues actualiza la caché!!!

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 16 Nov 2005 05:07 pm
XD XD XD XD XD XD XD XD XD XD je je je yo sabia que te estabas riendo debajo de todo ese pelo XD XD XD XD XD XD XD XD XD XD

Por Coyr

Claber

1048 de clabLevel

2 tutoriales

 

Manizales city

firefox
Citar            
MensajeEscrito el 16 Nov 2005 05:30 pm
hola...

Código :

<?php
$archivos = array("mayoristas.zip", "mayoristas.doc", "mayoristas.pdf");
$f = $_GET["f"];if(strpos($f,"/")!==false){
die("No puedes navegar por otros directorios");
}
if(!in_array($f,$archivos)){
die("<b>ERROR!</b> no es posible descargar $f");
}header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$f);
$fp=fopen("$f", "r");
fpassthru($fp);
?>

este lo saque del blog de fael y me gusto, por el filtrado de archivos que hace...
ve si te sirve....
A mi me funciono en FF ,IE Opera...

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 17 Nov 2005 01:55 pm
Bueno, ya conseguí que funcionara, pero ahora tengo una duda:

En el php pongo:

Código :

<?php

function descargar($so_mp3){

   $elArchivo = basename($so_mp3);
      
   header( "Content-Type: application/octet-stream"); 
   header( "Content-Length: ".filesize($so_mp3)); 
   header( "Content-Disposition: attachment; filename=".$elArchivo.""); 
   readfile($so_mp3); 
}
descargar($so_mp3);

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>DESCARGA DE ARCHIVOS</title>
</head>

<body onload="javascript:close();">
</body>
</html>


porque lo que quiero es que no se quede la ventana vacia después de descargar el archivo, si no que se cierre, pero el javascript no me funciona.

por cierto en el flash he puesto esto:

Código :

this.descarga_btn.onRelease = function() {
   var dl_audio:LoadVars = new LoadVars();
   dl_audio.so_mp3 = "archivo.mp3";
   dl_audio.send("descargar.php", "_blank");
};


:?

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 17 Nov 2005 02:18 pm
Sisco, el problema que mencionabas antes sobre:

Código :

$id = $_POST['id'];
como un error, era simplemente porque el parametro lo estas pasando al PHP por GET no por POST :P al quitar esa linea, y GRACIAS a que tu servidor tiene activadas las register_globals pues te funciona, ;) pero para no depender de eso, que por cierto PHP5 trae desactivadas por defecto, pues recoloca la línea, y donde ponias $_POST, pon $_GET y listo :)

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

firefox
Citar            
MensajeEscrito el 17 Nov 2005 02:47 pm
Es:

Código :

<body onload="javascript:window.close();"> 


o prueba con:

Código :

<body onload="javascript:document.close();"> 

Por Aoyama

BOFH

6224 de clabLevel

6 tutoriales
12 articulos

Genero:Masculino   Anime Bloggers Bastard Operators From Hell

Webdesigner & Developer, en mis ratos libres bebo café por litros.

firefox
Citar            
MensajeEscrito el 17 Nov 2005 03:48 pm
Muchas gracias!

Probando...

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 18 Nov 2005 04:26 pm
Pues no hay manera, siempre se queda la ventana ahí, la muy j*dida. En firefox queda blanca, pero en MIE queda lel horroroso mensaje "no se puede encontrar la página..."

Igual poniendo algún script con javascript que al cabo de un tiempo se cierre... no sé seguiré pensando.

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 18 Nov 2005 06:17 pm
Errrrrr.
La cosa no funciona así Sisco...


al script, le tienes que mandar una variable con el nombre de archivo que quieras descargar

Código :

<?php
$archivos = array("mayoristas.zip", "mayoristas.doc", "mayoristas.pdf");
$f = $_GET["f"];
if(strpos($f,"/")!==false){
die("No puedes navegar por otros directorios");
}
if(!in_array($f,$archivos)){
die("<b>ERROR!</b> no es posible descargar $f");
}header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=".$f);
$fp=fopen("$f", "r");
fpassthru($fp);
?>


y en un link
descarga.php?mayoristas.zip
y ya......, sin ventana ni nada

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 18 Nov 2005 06:28 pm
Si pero es que tengo unos 10 archivos por 10 directorios diferentes. Además no se los nombres de los arvhivos, ya que es el cliente el que los pone. Yo cargo el xml a flash y lo pongo en un list, el cual al seleccionar un elemento carga el audio, imagen y comentario en pantalla. entonces, me ha pedido que implemente un botón de descarga del audio mp3. Para lo cual he posteado aquí. Si coloco un botón que me envie el Loadvars con la variable cargada desde el xml el archivo php coge esa variable y proporciona el cuadro de diálogo guardar o abrirtal como quería, sin tener que usar lo típico del botón derecho.
En resumen, la idea es que desde un botón en flash, el cual recibe una variable con el nombre y la ruta del archivo seleccionado, se envie la variable al php y este proporcione el cuadro de diálogo guardar o abrir.
De todos modos, gracias por tu consejo, me puede servir si lo programo de otra manera. A ver.... :wink:

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 18 Nov 2005 06:35 pm
pues si, envias la variable del archivo con todo y ruta, para que se descargue...

Por rolv

Claber

2000 de clabLevel

3 tutoriales

 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.