Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]błąd kodowania plików podczas pobierania
brayan.tr
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 1.03.2011

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


Witam,
Pobieram pliki z serwera za pomocą php. Dzieje się dziwna rzecz, mianowicie skrypt działa poprawnie przy pobieraniu pdf i txt bez polskich znaków. W innych przypadkach na dysk zawsze ściągają się pliki z uszkodzonym kodowaniem.

Skrypt:
  1. switch ($ext) {
  2. case "pdf": $ctype="application/pdf"; break;
  3. case "exe": $ctype="application/octet-stream"; break;
  4. case "zip": $ctype="application/zip"; break;
  5. case "doc": $ctype="application/msword"; break;
  6. case "xls": $ctype="application/vnd.ms-excel"; break;
  7. case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
  8. case "gif": $ctype="image/gif"; break;
  9. case "png": $ctype="image/png"; break;
  10. case "jpeg":
  11. case "jpg": $ctype="image/jpg"; break;
  12. default: $ctype="application/force-download";
  13. }
  14.  
  15. header('Content-type: '.$ext);
  16. header('Content-Disposition: attachment; filename="'.$plik.'"');
  17. readfile($sciazka);


próbowałem także, czegoś takiego. i wynik zawsze ten sam:
  1. switch ($ext) {
  2. case "pdf": $ctype="application/pdf"; break;
  3. case "exe": $ctype="application/octet-stream"; break;
  4. case "zip": $ctype="application/zip"; break;
  5. case "doc": $ctype="application/msword"; break;
  6. case "xls": $ctype="application/vnd.ms-excel"; break;
  7. case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
  8. case "gif": $ctype="image/gif"; break;
  9. case "png": $ctype="image/png"; break;
  10. case "jpeg":
  11. case "jpg": $ctype="image/jpg"; break;
  12. default: $ctype="application/force-download";
  13. }
  14.  
  15. header('Content-Description: File Transfer');
  16. header('Content-Type: application/octet-stream');
  17. header("Content-Type: $ctype");
  18. header('Content-Disposition: attachment; filename="$plik"');
  19. header('Content-Transfer-Encoding: binary');
  20. header('Expires: 0');
  21. header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  22. header('Pragma: public');
  23. header('Content-Length: ' . filesize($sciazka));
  24. flush();
  25. readfile($sciazka);


Propozycje ?

EDIT
dodam ze plik z skyptem jest zakodowany: UTF-8 bez BOM

Rozwiązałem problem. Wina leżała po stronie plików includowanych przez opisywanym w tym poście kodem. Jeden z plików miał kodowanie UTF-8 a nie UTF-8 bez DOM. To była jedyna wina.

Mam nadzieje że się to komuś w przyszłości przyda.

Ten post edytował brayan.tr 27.04.2011, 18:50:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


A ja mam nadzieje, że ktoś zamiast się tak szarpać, pójdzie po rozum do głowy i skorzysta z http://pear.php.net/HTTP_Download
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: 20.08.2025 - 13:40