Comunidad de diseño web y desarrollo en internet

Forzar descarga de archivos mp3 o avi con Flash y php

Si queremos que algún cliente se pueda decargar un archivo mp3 (que no tiene porque ser con copyright) o cualquier otro archivo, lo normal es enlazarlo directamente como si fuera un zip o algo así. Lo que ocurrirá es que nuestro reproductor favorito se pondrá en funcionamiento para reproducir ese archivo. Si lo que queremos es que salga el cuadro de diálogo descargar archivo deberemos hacer algo parecido a los siguiente:

En flash asignamos a un boton el siguiente código:

Código :

////DESCARGAR
descarga_btn.onRelease = function() { //al pulsar el boton
   if (varDelMp3 != undefined) { //variable que contiene el nombre y ruta del archivo mp3 
      var el_audio:LoadVars = new LoadVars(); //creamos el objeto loadVars
      el_audio.so_mp3 = varDelMp3; //le asignamos el archivo
      el_audio.send("audios_descargar.php", "_self"); //lo enviamos al php
   } else {
      getURL("error.html", "_blank"); //si la cosa sale mal, ponemos un lindo archivo disculpándonos.
   }
};

A continuación en el php ponemos:

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>Error al Descarregar el arxiu d'audio</title>
</head>

<body>
<p>No se ha podido descargar el audio</p>
</body>
</html>


Y claro, lo guardaremos con el nombre audios_descargar.php

cuando pulsemos el boton de descargar, nos saldrá a la fuerza el cuadro de diálogo guardar o abrir el archivo. Así evitaremos que se abra el Media player para reproducir el archivo.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate