Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sciąganie pliku
Forum PHP.pl > Forum > PHP
sajborg
Siemka robie system downloadu mam takie coś

  1. <?
  2. if (isset($HTTP_GET_VARS['f']) and isset($HTTP_GET_VARS['k'])){
  3.    $sql=&#092;"SELECT * FROM homp_download WHERE down_id=\".$HTTP_GET_VARS['f'].\"\";
  4.    $result=$db->sql_query($sql);
  5.    $file = $db->sql_fetchrow($result);
  6.    $url = $file['down_adres'];
  7.    $sql=&#092;"UPDATE homp_download SET down_sciagniecia=down_sciagniecia+1 WHERE down_id=
    \".$HTTP_GET_VARS['f'].\"\";
  8.    $db->sql_query($sql);
  9.    $sql=&#092;"SELECT * FROM homp_downkat WHERE id=\".$HTTP_GET_VARS['k'].\"\";
  10.    $result=$db->sql_query($sql);
  11.    $kategoria = $db->sql_fetchrow($result);
  12.    $dirname=strtr($kategoria['title'], &#092;"ABCDEFGHIJKLMNOPRSTUWXYZ\",\"abcdefghijklmnoprstuwxyz\");
  13.    header(&#092;"Location: /download/$dirname/$url\");
  14. }
  15. ?>


Wszystko pięnie działa oprócz sciagania pliku chciałem zeby wyskoczyło okienko czy zapisać plik itd. Ale to sie nie pokazuje. Na tesj stronie na której to jest otwiera sie ten plik znaczy np jak to jest plik rar to są jakieś dziwne znaczki itd sad.gif
akubiczek
Musisz wysłać odpowiedniego nagłówki, coś w tym stylu:

Kod
header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=raport.csv");


Oczywiście podstawiając odpowiedni mimetype i nazwę pliku.
sajborg
Thx widziałem to w manualu ale nie skumałem tego po chwili zrozumiałem. Zrobiłem to tak

  1. <?php
  2.  header(&#092;"Content-Type: application/x-rar-compressed\");
  3.  chdir('download/'.$dirname.'');
  4.  header(&#092;"Content-Disposition: attachment; filename= $url\");
  5. ?>


Bo w filename nie można podawać ścieżki tylko sam plik
rogrog
ja mam coś takiego:

  1. <?php
  2. ##download##
  3.  
  4. //lista plików jakie można ściągać
  5. //indeks odpowiada zmiennej przesyłanej w urlu
  6. $pliki = Array();
  7. $pliki['regulamin'] = 'regulamin.doc';
  8. $pliki['umowa'] = 'umowa.doc';
  9.  
  10. $dir='doc';
  11. $filename=$pliki[$_GET[plik]];
  12. $pathfile=$dir.'/'.$filename;
  13.  
  14. if($filename && file_exists($pathfile)){
  15.  
  16.   header('Content-Type: application/octet-stream');
  17.   header('Content-Disposition: attachment; filename='.$filename);
  18.   header('Content-Type: application/force-download');
  19.   readfile($pathfile);
  20.  
  21. } else {
  22.  
  23.   echo 'Wystąpił błąd: nie ma takiego pliku';
  24.  
  25. }
  26.  
  27.  
  28. ?>
sajborg
Jest zrobilem wczesniej dawałem readile ale ze scieżko skapołem sie ze daje przeciez chdir i dałem w readfile sam pliczek i ludzie o dziwo śmiga :]

  1. <?php
  2.  
  3.  header(&#092;"Content-Type: application/force-download\");
  4.  chdir('download/'.$dirname.'');
  5.  header(&#092;"Content-Disposition: attachment; filename= $url\");
  6.  readfile(&#092;"$url\");
  7. ?>
[php]

Ludzie czytać dokładnie manuala :]
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.