Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: pobieranie plików + problem z kodowaniem
Forum PHP.pl > Forum > PHP
brayan.tr
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 ?

Fifi209
  1. header('Content-Type: costam; charset=utf8')


Z tego co pamiętam. smile.gif
Kodowanie utf8 jest tu oczywiście przykładem, tak jak "costam"
brayan.tr
Dałem coś takiego np dla obrazka
  1. header("Content-Type: image/jpg; charset=utf8");


I obrazek nadal sie nie włącza. Coś źle robię albo nie w tym problem.
Fifi209
Jak mogłeś dla obrazka dodać... myśl chłopie.
brayan.tr
Chłopie kodowanie plików w każdym formacie je psuło. Dzięki za zainteresowanie.

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.
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.