Autor | Zpráva | ||
---|---|---|---|
matusicaa Profil * |
#1 · Zasláno: 21. 3. 2013, 12:00:53
Dobry den, potrebujem radu ohladne force downloadu DOC suboru. Niektore dokumenty mi stahuje normalne, ale niektore uplne zle prekodovane a nedaju sa zobrazit...Napriklad take kde je nejaka tabulka tak uz to nejde.... Netusim čim to je.. Tu je kod:
switch ($file_extension) { case "doc": $contenttype = "application/vnd.ms-word"; break; case "docx": $contenttype = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; break;} header("Content-Description: File Transfer"); header("Content-Type: ".$contenttype.""); header("Content-Disposition: attachment; filename=\"".basename($path)."\""); header("Content-Transfer-Encoding: binary;"); readfile ($path); |
||
Majkl578 Profil |
#2 · Zasláno: 22. 3. 2013, 01:47:24
Uvedený kód se mi principielně zdá v pořádku.
Hlavičky Content-Description a Content-Transfer-Encoding jsou nejspíš zbytečné, naopak by bylo vhodné přidat Content-Length .
Určitě jsou soubory těsně před odesláním v pořádku? |
||
Michel Profil |
matusicaa:
A nemělo by být mezi řádky 8 a 9 vloženo header("Content-Type: application/force-download"); ?
|
||
matusicaa Profil * |
#4 · Zasláno: 22. 3. 2013, 13:13:09
[#2] Majkl578Hlavicky som odstranil a pridal som content lenght no ani to nepomohlo.. A ano vsetko je dobre uplaodnute na servery..ked to stihanem cez FTP tam subor je neporuseny...avsak akonahle cez henten kod tak nastane chyba...Napadama ci nie je chyba u poskytovatela serveru...
[#3] MichelSkusal som no stale to iste... |
||
Virtus Profil |
#5 · Zasláno: 22. 3. 2013, 15:32:01
mně zatím vždy a všude fungovala tato konstrukce:
header("Content-Disposition: attachment; filename=\"$fileName\""); header("Content-Transfer-Encoding: Binary"); header("Content-length: ".filesize($fileName)); header("Content-Type: ".mime_content_type($fileName)." charset=utf-8"); $fileContents = file_get_contents($fileName); echo $fileContents; die(); |
||
aDAm Profil |
#6 · Zasláno: 22. 3. 2013, 15:50:35
matusicaa:
a nevyechuje se ti tam náhodou něco? |
||
Majkl578 Profil |
#7 · Zasláno: 22. 3. 2013, 19:51:32
$length = filesize($fileName); header('Content-Type: application/octet-stream'); // vynucení downloadu header('Content-length: ' . $length); // délka výstupu header('Content-Disposition: attachment; filename="' . basename($fileName) . '"'); // název souboru $handle = fopen($fileName, 'r'); while (!feof($handle) && $length > 0) { echo $s = fread($handle, min(4e6, $length)); $length -= strlen($s); } fclose($handle); exit; Takto by to mělo být naprosto postačující. Pokud to ani teď fungovat nebude, nejspíš je špatně něco jiného. Ujisti se, že nikde nejdou na výstup jiná data a/nebo hlavičky. |
||
matusicaa Profil * |
#8 · Zasláno: 22. 3. 2013, 22:08:46
Majkl578 a Virtus
Zial ani toto mi nechce fungovat a dokumenty su stale nejako divne kodovane... A nie nic sa mi nedostava na vystup..vytvoril som si priamo metodu v Codeinigteri a naozaj nic sa mi nedostava na vystup ineho ako toto..ale na localhoste mi to funguje bezproblemovo..takze chyba asi bude na strasne poskytovatela servera, tak skusim najst riesenie tam..ale dakujem za vsetky rady, aspon viem, ze u mna chyba nie je... |
||
Virtus Profil |
#9 · Zasláno: 22. 3. 2013, 23:31:25
Můžete si na serveru zkusit "pohrát" s funkcemi jako jsou: mb_internal_encoding() a ini_set() - ini_set('default_charset', 'utf-8'), možná i další, mohli by třeba pomoct.
|
||
Časová prodleva: 3 dny
|
|||
matusicaa Profil * |
#10 · Zasláno: 25. 3. 2013, 14:12:29
Dostal som odpoved od spravcu servera:
servery su nastavene standardne na utf-8, avsak subor doc ktory ste nam poslali ako vzor je kodovany schemou windows-1250. Pre zabezpecenie kompatibility odporucame zmenit nastavenie charsetu pre jednotlive typy dokumentov (napr. v subore .htaccess), Viac informacii je dostupnych tu: http://www.w3.org/International/questions/qa-htaccess-charset.en avsak ani po pridani riadkov do htacces: AddCharset UTF-8 .doc AddCharset UTF-8 .docx AddCharset UTF-8 .xls AddCharset UTF-8 .xlsx sa nic nezlepsilo... |
||
Virtus Profil |
Nejsem si jistý, moc dobře anglicky neumím (= translate.googl.com), ale nemělo by to spíš vypadat takhle, podle toho co mi google z http://www.w3.org/International/questions/qa-htaccess-charset.en přeložil:
AddCharset windows-1250 .doc AddCharset windows-1250 .docx AddCharset windows-1250 .xls AddCharset windows-1250 .xlsx |
||
matusicaa Profil * |
#12 · Zasláno: 26. 3. 2013, 12:35:36
nepomohlo....
|
||
Virtus Profil |
Další možnost co mně napadá, zkusil jste tohle?:
header("Content-Type: ".mime_content_type($fileName)." charset=windows-1250"); //[#5] //nebo header('Content-Type: application/octet-stream charset=windows-1250'); //[#7] |
||
Davex Profil |
#14 · Zasláno: 26. 3. 2013, 19:10:03
matusicaa:
Příčina problému by mohla být někde úplně jinde a možná by se hodil odkaz na živou ukázku. Nenapadá mě důvod, proč by měl Word (nebo v čem je otevíráš?) koukat na charset v HTTP hlavičce staženého dokumentu. Virtus: Před charset chybí středník.
|
||
matusicaa Profil * |
#15 · Zasláno: 27. 3. 2013, 13:23:13
Spravil som pure php verziu bez codeignitera a tam to ide...zaujimave, ze by mal codeigniter nejake nastavenia?
|
||
Časová prodleva: 11 let
|
0