Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Force Download
Forum PHP.pl > Forum > Przedszkole
Dingo
Witam,
Mam problem z force downloadem opartym na hederach. Mianowicie jest sobie stronka http://www.dingus.yoyo.pl/index.php?page=upload
Po wrzuceniu na nią pliku jest tworzony losowy katalog w folderze 'store' oraz zostają zapisane do bazy inne informacje.
To wszystko działa ok. Plik się pojawia, ma chmody 777 (na foldery i plik).
Plik poprawnie się pobiera jak wskaże w przeglądarce ścieżkę. Jednak jest problem z force downloadem. Plik owszem ściąga się i nawet ma taki sam rozmiar, jednak nie idzie go odpalić sad.gif.
Np: http://www.dingus.yoyo.pl/download.php?key=6878062317613B

Proszę o pomoc. Oto kod downloaded.php (frame download.php)
  1. <?php
  2. //
  3. //sprawdza czy wylosowana i dodana liczba zgadza sie liczbie wylosowanej w danym dniu :-)
  4. //$data = date("Y-m-d");
  5. //$odczyt2 = mysql_query("SELECT * FROM dni where dataa = '$date");
  6. //$sprawdz_date = mysql_fetch_array($odczyt2);
  7. //
  8.  
  9. //BODY
  10. echo '<div id="content">
  11. <div class="post">
  12. <h1 class="title">'.$contents['download_files'].'</h1>
  13. <div class="entry">
  14. <p><img src="images/download.png" alt="" width="64" height="64" class="left" />Pobierz plik! Możesz pobierać 1 plik co 1h! ?</p>
  15. <center><input type="submit" id="1" onclick="parent.location.href=\'http://www.dingus.yoyo.pl/download.php?day=1&key='.$_GET['key'].'\'" value="Proszę czekać 1 sekund" />
  16. <script type=\'text/javascript\'>
  17. document.getElementById(\'1\').disabled = true;
  18. var counter = 1;
  19. function countdown(counter) {
  20. counter--;
  21. document.getElementById(\'1\').value = \'Proszę czekać \' + counter + \' sekund\';
  22. if(counter == 0) {
  23. document.getElementById(\'1\').disabled = false;
  24. document.getElementById(\'1\').value = \'Pobierz Plik\';
  25. }
  26. return counter;
  27. }
  28. setInterval(\'counter = parseInt(counter); if(counter > 0) { counter = countdown(counter); }\', 1000);
  29. </script></center>';
  30. if($_GET['day'] == '1')
  31. {
  32. /* if (!file_exists($dl_full))
  33. {
  34. //powrót do strony głównej + napis ze plik nie istnieje :-)
  35. exit();
  36. }
  37. $nazwa_pliku = $pliki['nazwa_pliku'];
  38. $dl_full=''.$dir_store.'/'.$pliki['folder'].'/'.$pliki['nazwa_pliku'].'';
  39. header("Content-Type: application/octet-stream");
  40. header("Content-Disposition: attachment; filename=$nazwa_pliku");
  41. header("Content-Length: ".filesize($dl_full));
  42. header("Accept-Ranges: bytes");
  43. header("Pragma: no-cache");
  44. header("Expires: 0");
  45. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
  46. header("Content-transfer-encoding: binary");
  47. @readfile($dl_full);
  48. exit(); */
  49.  
  50. if(file_exists(''.$dir_store.'/'.$pliki['folder'].'/'.$pliki['nazwa_pliku'].'')){
  51. //wyslanie naglowkow - pliku
  52. header("Cache-Control: public");
  53. header("Content-Description: File Transfer");
  54. header('Content-disposition: attachment; filename='.$pliki['nazwa_pliku']);
  55. header("Content-Type: application/force-download");
  56. header("Content-Type: application/octet-stream");
  57. header("Content-Type: application/download");
  58. header("Content-Transfer-Encoding: binary");
  59. header('Content-Length: '.filesize(''.$dir_store.'/'.$pliki['folder'].'/'.$pliki['nazwa_pliku'].''));
  60. @readfile(''.$dir_store.'/'.$pliki['folder'].'/'.$pliki['nazwa_pliku'].'');
  61. }
  62. else{
  63. echo'Bledny link lub plik nie istnieje!';
  64. }
  65. return false;
  66. }
  67. echo ' </div>
  68. </div>
  69. <div class="post">
  70. <h2 class="title">'.$l_menu['advertisement'].'</h2>
  71. <div class="entry"><center>';
  72. include ('advertisement2.php');
  73. echo' </center>
  74. </div>
  75. </div>
  76. </div>';
  77. ?>

Jeżeli coś jeszcze potrzeba to podrzucę sad.gif
cfg:
  1. <?php
  2. //session_start(); //sesje, do logowania
  3. //ob_start(); //emulacja headerow
  4. //////////////////////////////////////////////////////////////////////////////////////////UPLOADER!
  5. //CFG///////////////////////////////////////////////////////////
  6. # individual file size limit - in bytes (102400 bytes = 100KB)
  7. $file_size_ind = "10240000";
  8. # the upload store directory (chmod 777)
  9. $dir_store= "store";
  10. # sciezka dostepu do katalogu. Domyslnie: "/var/www/sites/yoyo.pl/d/i/dingus/$dir_store"
  11. $sciezzka= "/var/www/sites/yoyo.pl/d/i/dingus/$dir_store";
  12. # rozszerzenia zabronione
  13. $file_ext_allow = array("php", "html", "htm", "cgi");
  14. //Funckje i inne pierdułki!/////////////////////////////////////
  15.  
  16. //
  17.  
  18. ?>
Fifi209
Podajesz w nagłówkach 3 razy inny typ, zdecyduj się...
potreb
Spróbuj może mój download, prosto z manuala, należy pozmieniać zmienne.

  1. if(file_exists(UPLOADIR.$r->furl)) {
  2. header('Content-Description: File Transfer');
  3. header('Cache-Control: public, must-revalidate, max-age=0'); // HTTP/1.1
  4. header('Pragma: public');
  5. header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); // Date in the past
  6. header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  7. // force download dialog
  8. header('Content-Type: application/force-download');
  9. header('Content-Type: application/octet-stream', false);
  10. header('Content-Type: application/download', false);
  11. header('Content-Type: '.$r->fmime.'', false);
  12. // use the Content-Disposition header to supply a recommended filename
  13. header('Content-Disposition: attachment; filename="'.basename($url).'";');
  14. header('Content-Transfer-Encoding: binary');
  15. header('Content-Length: '.filesize($url));
  16. flush();
  17. readfile($url);
  18. }


U mnie też 3 różne typy :/
Dingo
potreb
Jak mi powiesz co u Ciebie odpowiada za ścieżkę, a co za nazwę pliku (jaka zmienna) to pozmieniam. Bo nie ogarniam :-)

@Edit
Coś jest zwalone, tylko nie wiem co sad.gif
Tak też nie działa (oczywiście zadeklarowałem zmienne ;P)
readfile("ftp://dingus.yoyo.pl:xxxxxxxxxxxx@dingus.yoyo.pl/$dir_store/$folder/$nazwa_pliku");

P.S. Jak coś działa, no ale opisałem w 1 poście jak działa. Pliku otworzyć się nie da ;(.

@Edit2
Rozwiązane.
Kodowanie UTF dopisywało 3 bity do pliku!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.