Posted By

nicolaspar on 01/12/07


Tagged


Versions (?)

Who likes this?

4 people have marked this snippet as a favorite

basicmagic
vali29
hudge
jprice


PHP - AntiLeecher


 / Published in: PHP
 

  1. <?
  2. function descarga($archivo,$velocidad,$respeta_extension = true) {
  3. // Si el archivo que solicitamos no existe...
  4. if (!file_exists($archivo)) {
  5. return false;
  6. };
  7.  
  8. // Sacamos las variables del archivo
  9. $tamano = filesize($archivo);
  10. $extension = substr(strrchr($archivo,"."),1);
  11.  
  12. // Comprobamos la extension... si la puede descargar y el tipo de archivo
  13. switch ($extension) {
  14. break;
  15. case "php": case "php3": case "php4": case "php5": case "htm": case "html": case "txt": case "phtml":
  16. return false;
  17. break;
  18. default:
  19. if ($respetar_extension) {
  20. $contenido="application/".$extension;
  21. } else {
  22. $contenido = mime_content_type($archivo);
  23. }
  24. break;
  25. }
  26.  
  27. @ob_end_clean(); // Limpiamos el buffer de salida
  28.  
  29. // Enviamos las cabeceras
  30. header("Content-Length: " . $tamano);
  31. header("Content-Disposition: attachment; filename=\"$archivo\"");
  32. header("Content-Type: " . $contenido);
  33.  
  34. // Empezamos a leer el archivo para enviarlo...
  35. $lee_archivo = fopen($archivo, "r"); // "rb" -> Windows ## "r" -> Linux
  36.  
  37. while(!feof($lee_archivo) && connection_status()==0) {
  38. if ($velocidad != 0) {
  39. echo fread($lee_archivo, 1024 * $velocidad); // Usa $velocidad kb buffer de salida (limitada)
  40. sleep(1); // Paramos un segundo para limitar la velocidad
  41. } else {
  42. echo fread($lee_archivo,1024*6); // Usa 6Kb buffer de salida
  43. }
  44. flush(); // Vacia el buffer de salida...
  45. }
  46. // Cerramos el archivo
  47. fclose($lee_archivo);
  48. }
  49.  
  50. //// Aqui para descargar....
  51. // En qu?arpeta tenemos las descargas:
  52. $ruta_descargas = "./descargas/";
  53. $archivo = "archivo.gif.jpg"; // Realmente es un gif, pero la extension es JPG
  54. // La velocidad de descarga que queremos que tengan los usuarios en KB/seg
  55. $velocidad = 0; // KB/seg ## 0 para Ilimitada
  56. $archivo = $ruta_descargas.$archivo;
  57. // Ejemplos................................................................
  58. descarga($archivo,$velocidad); // Descargamos el archivo JPG
  59. descarga($archivo,$velocidad,true); // Descargamos el archivo GIF
  60. ?>

Report this snippet  

You need to login to post a comment.