Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Force Download
Dingo
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 27.05.2009

Ostrzeżenie: (0%)
-----


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. ?>
Go to the top of the page
+Quote Post
Fifi209
post
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Podajesz w nagłówkach 3 razy inny typ, zdecyduj się...


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
potreb
post
Post #3





Grupa: Zarejestrowani
Postów: 1 568
Pomógł: 192
Dołączył: 7.03.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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 :/

Ten post edytował potreb 23.11.2009, 00:16:59


--------------------

Go to the top of the page
+Quote Post
Dingo
post
Post #4





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 27.05.2009

Ostrzeżenie: (0%)
-----


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!

Ten post edytował Dingo 23.11.2009, 19:05:44
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 09:11