Autor | Zpráva | ||
---|---|---|---|
Fisak Profil |
#1 · Zasláno: 18. 11. 2012, 13:07:51
Dobrý den. Našel jsem na internetu skript na stahování. Bohužel mi nějak nefachá. Mohl by mi někdo říct prosím co dělám špatně?
function download_file($file) { if(isset($_SERVER['HTTP_USER_AGENT']) && preg_match("/MSIE/", $_SERVER['HTTP_USER_AGENT'])) { ini_set( 'zlib.output_compression','Off' ); } header ('Content-Disposition: attachment; filename="'.basename($file).'"'); header ('Expires: '.gmdate("D, d M Y H:i:s", mktime(date("H")+2, date("i"), date("s"), date("m"), date("d"), date("Y"))).' GMT'); header ('Accept-Ranges: bytes'); header ('Cache-control: no-cache, must-revalidate'); header ('Pragma: private'); $size = filesize($file); if(isset($_SERVER['HTTP_RANGE'])) { list($a, $range)=explode("=",$_SERVER['HTTP_RANGE']); str_replace($range, "-", $range); $size2=$size-1; $new_length=$size2-$range; header("HTTP/1.1 206 Partial Content"); header("Content-Length: $new_length"); header("Content-Range: bytes $range$size2/$size"); } else { $size2=$size-1; header("Content-Range: bytes 0-$size2/$size"); header("Content-Length: ".$size); } if ($file = fopen($file, 'rb')) { while(!feof($file) and (connection_status()==0)) { print(fread($file, 1024*8)); flush(); } $status = (connection_status()==0); fclose($file); } return($status); } download_file("/uploads/file.rar"); |
||
Tori Profil |
#2 · Zasláno: 18. 11. 2012, 13:37:10
Fisak:
„Bohužel mi nějak nefachá.“ Jak konkrétně? Nevadí tam ta absolutní adresa ve filesystému (ř.44)? |
||
Fisak Profil |
#3 · Zasláno: 18. 11. 2012, 13:41:23
Tori:
a mohu se zeptat jak jinak by tam měla být ta cesta? Já již vyzkoušel všechny možnosti snad :( |
||
Tori Profil |
#4 · Zasláno: 18. 11. 2012, 14:05:59
Fisak:
Myslela jsem to tak, jestli tam nemá být spíš něco jako /var/www/www.mujweb.tld/uploads/file.rar . Ale jestli opravdu používáte adresář /uploads (asi na VPS?), tak je to samozřejmě v pořádku.
|
||
Fisak Profil |
#5 · Zasláno: 18. 11. 2012, 14:33:39
Tori:
Stále to nejde. Jakmile to zkouším na localhostu tak to jde v pohodě ale když to zkusím na endoře tak mi to stáhne soubor který má 0kb |
||
Norman Profil |
#6 · Zasláno: 18. 11. 2012, 17:26:35
Fisak:
Je pěkné, že si našel script na stahování, ale o dost lepší by bylo kdyby si nám řekl na co ho potřebuješ.. Čeho chceš docílit? |
||
Tori Profil |
Fisak:
„mi to stáhne soubor který má 0kb“ HTTP hlavička Content-Length má očekávanou hodnotu, nebo taky nula? viz clearstatcache
Je nějaký rozdíl v tom, když místo celého cyklu s fread apod. použijete jen obyč. echo file_get_contents? Zkoušel jste si logovat, co se ve skriptu děje, kam až se dostane, jestli nedojde k timeoutu, atd.? Čistě ze zvědavosti: k čemu je řádek 17, když se jednak s návratovou hodnotou vůbec nepracuje, a pokud, tak by stačilo prostě do $range přiřadit mínus. |
||
Fisak Profil |
#8 · Zasláno: 18. 11. 2012, 20:30:43
Norman:
To je docela blbá otázka čeho chci docílit :-) Tori: Dobře zkusím to. |
||
Rellik Profil |
#9 · Zasláno: 18. 11. 2012, 20:45:35
Fisak:
„To je docela blbá otázka čeho chci docílit“ Myslím, že zas až tak blbá otázka to není. Pokud chceš stahovat "rar" soubory, tak ti na to stačí obyčejný odkaz a ne nějaký šílený kód, který ti stejně nefunguje... |
||
Fisak Profil |
#10 · Zasláno: 18. 11. 2012, 20:45:44
Tori:
vypsalo mi to: Warning: posix_getpwuid() has been disabled for security reasons in /home/users/insignia/insignia.funsite.cz/web/php_modules/download/index.php on line 7 UID @ Sun, 18 Nov 2012 20:45:00 +0100: Warning: chown(): Unable to find uid for ross in /home/users/insignia/insignia.funsite.cz/web/php_modules/download/index.php on line 15 Warning: posix_getpwuid() has been disabled for security reasons in /home/users/insignia/insignia.funsite.cz/web/php_modules/download/index.php on line 7 UID @ Sun, 18 Nov 2012 20:45:00 +0100: Warning: posix_getpwuid() has been disabled for security reasons in /home/users/insignia/insignia.funsite.cz/web/php_modules/download/index.php on line 7 UID @ Sun, 18 Nov 2012 20:45:00 +0100: |
||
Kcko Profil |
Fisak:
Zkus toto http://www.webfaq.cz/clanek/Jak-nabidnout-soubor-ke-stazeni |
||
Fisak Profil |
#12 · Zasláno: 18. 11. 2012, 21:05:25
Kcko:
použil jsem jiný skript který funguje ale mockrát děkuji :-) <?php // place this code inside a php file and call it f.e. "download.php" $path = $_SERVER['DOCUMENT_ROOT']."/path2file/"; // change the path to fit your websites document structure $fullPath = $path.$_GET['download_file']; if ($fd = fopen ($fullPath, "r")) { $fsize = filesize($fullPath); $path_parts = pathinfo($fullPath); $ext = strtolower($path_parts["extension"]); switch ($ext) { case "pdf": header("Content-type: application/pdf"); // add here more headers for diff. extensions header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); // use 'attachment' to force a download break; default; header("Content-type: application/octet-stream"); header("Content-Disposition: filename=\"".$path_parts["basename"]."\""); } header("Content-length: $fsize"); header("Cache-control: private"); //use this to open files directly while(!feof($fd)) { $buffer = fread($fd, 2048); echo $buffer; } } fclose ($fd); exit; |
||
Časová prodleva: 11 let
|
0