fork download
  1. <?php
  2.  
  3. // Script desenvolvido por Rodrigo Ferreira facebook.com/ryumaruwebanimes
  4. /*
  5. Esse script permite fazer download e renomear arquivos por url Remota por metodo Curl aplicação deste script e devastadora você podera usar ele para varias url menos no caso
  6. de servidores de download normais uma vez que para isso devera ter um retorno do valor real passando pelo sistema de protect link do servidor mais funciona com qualquer url
  7. de link direto.
  8. */
  9.  
  10. // Tempo de execução do script infinito
  11.  
  12. // Função para forçar download de qualquer arquivo
  13. function download($file,$tamanhoGeral){
  14.  
  15. header('Content-Description: File Transfer');
  16. header('Content-Type: application/octet-stream');
  17. header('Content-disposition: attachment; filename="ryumaru_fudeu_uol.mp4"');
  18. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  19. header('Expires: 0');
  20. header('Pragma: public');
  21. $size = get_size($file);
  22. header('Content-Length: '.$size);
  23.  
  24. $i = 0;
  25. while($i<=$size){
  26. //Output do da UOL
  27. tamanhoUOL($file,(($i==0)?$i:$i+1),((($i+$tamanhoGeral)>$size)?$size:$i+$tamanhoGeral));
  28. $i = ($i+$tamanhoGeral);
  29. }
  30.  
  31. }
  32.  
  33. // Função de chamada de retorno para CURLOPT_WRITEFUNCTION, Isto é o que imprime o pedaço
  34. function downloadForcado($ch, $str) {
  35. print($str);
  36. return strlen($str);
  37. }
  38.  
  39. // Função para obter um intervalo de bytes do arquivo remoto
  40. function tamanhoUOL($file,$start,$end){
  41. $ch = curl_init();
  42. curl_setopt($ch, CURLOPT_URL, $file);
  43. curl_setopt($ch, CURLOPT_RANGE, $start.'-'.$end);
  44. curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
  45. curl_setopt($ch, CURLOPT_WRITEFUNCTION, 'downloadForcado');
  46. $result = curl_exec($ch);
  47. curl_close($ch);
  48. }
  49.  
  50. // Pega o Tamanho total do arquivo
  51. function get_size($url){
  52. $ch = curl_init();
  53. curl_setopt($ch, CURLOPT_URL, $url);
  54. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  55. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  56. curl_setopt($ch, CURLOPT_HEADER, true);
  57. curl_setopt($ch, CURLOPT_NOBODY, true);
  58. curl_exec($ch);
  59. $size = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
  60. return intval($size);
  61. }
  62.  
  63.  
  64.  
  65. // Chamando a função para funcionammento
  66. $file = 'url de download aqui';
  67.  
  68. // Tamanho maximo do arquivo do lado do $file
  69. download($file,314572800);
  70. ?>
Success #stdin #stdout 0.02s 61768KB
stdin
Standard input is empty
stdout
Standard output is empty