Autor | Zpráva | ||
---|---|---|---|
Kcko Profil |
#1 · Zasláno: 28. 5. 2008, 20:29:46
Dlouho dobu jsem pouzival peknou tridu od Alese Dostala
/** * trida pro stazeni souboru * tato trida umoznuje stejnou funkcnost jak v IE tak ve firefoxu * * @author Dostal Ales * @version 1.1 * @date 13.4.2006 * */ class DownloadFile { /****************************** METODY TRIDY ******************************/ /** * konstruktor tridy pro stazeni souboru * * @param String $file zdroj k souboru, ktery se bude stahovat * */ function ExecuteDL($file) { // zjisteni, zda soubor existuje if (!is_file($file)) { die("<b>404 Soubor neexistuje!</b>"); } // ziskani informaci o souboru $len = filesize($file); $filename = basename($file); $file_extension = strtolower(substr(strrchr($filename,"."),1)); // nastaveni content-type pro vybrane soubory switch( $file_extension ) { case "pdf": $ctype="application/pdf"; break; case "exe": $ctype="application/octet-stream"; break; case "zip": $ctype="application/zip"; break; case "doc": $ctype="application/msword"; break; case "xls": $ctype="application/vnd.ms-excel"; break; case "ppt": $ctype="application/vnd.ms-powerpoint"; break; case "gif": $ctype="image/gif"; break; case "png": $ctype="image/png"; break; case "jpeg": case "jpg": $ctype="image/jpg"; break; case "mp3": $ctype="audio/mpeg"; break; case "wav": $ctype="audio/x-wav"; break; case "mpeg": case "mpg": case "mpe": $ctype="video/mpeg"; break; case "mov": $ctype="video/quicktime"; break; case "avi": $ctype="video/x-msvideo"; break; # tyto soubory nemohou byt stazeny case "php": case "htm": case "html": case "txt": die("<b>Není možné stahovat ". $file_extension ." soubory!</b>"); break; default: $ctype="application/force-download"; } # odeslani hlavicek session_cache_limiter("private"); # v IE nelze stáhnout dokument pres HTTPS header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: public"); header("Content-Description: File Transfer"); # generuje typ pro content-type header("Content-Type: $ctype"); # co stahuji $header="Content-Disposition: attachment; filename=".$filename.";"; header($header ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".$len); readfile($file); exit; } # public function __construct($file) } # class APIDownloadFile Problem nastal v tu chvili, kdy jsem si do htaccessu ZLIB kesovani php_flag zlib.output_compression on php_value zlib.output_compression_level 8 V tuto chvili se mi nepodari napr. zadny ZIP ci RAR soubor rozbalit. Porovnaval jsem originalni soubor a stazeny po teto uprave pomoci md5_file ( ci v PSPADU) a md5 kontrolni retezce uz nesouhlasi. Ten zlib ty hlavicky nejak ********** Nesetkal se s tim nekdo? Vubec nevim kam mam sahnout |
||
Davex Profil |
#2 · Zasláno: 28. 5. 2008, 23:37:39 · Upravil/a: Davex
Na začátku skriptu vypni on-fly kompresi pomocí
ini_set('zlib.output_compression', 'Off'); Některé prohlížeče neumí stahované soubory po přenosu správně dekomprimovat a u některý typů souborů je komprese pro přenos zbytečná. |
||
Kcko Profil |
#3 · Zasláno: 29. 5. 2008, 00:50:03
Super, pomohlo!
Jeste bych se optal, kdybych nemel na hostingu moznost menit ini direktivy, lze to jeste jinym zpusobem napravit? |
||
Davex Profil |
#4 · Zasláno: 29. 5. 2008, 19:13:20
Kcko
Download skript se může umístit do samostatného podadresáře, kde se output_compression vypne pomocí .htaccess. |
||
Kcko Profil |
#5 · Zasláno: 29. 5. 2008, 19:18:33
Jasne, taky napad, DIKY MOC, zaviram :)
|
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0