Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Krzaki zamiast polskich znaków w nazwach plików (tylko pod IE)
Forum PHP.pl > Forum > PHP
wojto
Witam,
mam skrypt, którego fragment odpowiedzialny za pobieranie pliku wygląda następująco:
  1. <?php
  2. header("HTTP/1.1 200 OK");
  3. header("Content-Length: $fsize");
  4. header("Content-Type: application/force-download; charset=utf-8");
  5. header('Content-Disposition: attachment; filename="'.$file->fil_uploaded_filename.'"');
  6. header("Content-Transfer-Encoding: binary");
  7.  
  8. if ($fh = @fopen($fpath, "rb")) {
  9. while($buf = @fread($fh, $bufsize)) {
  10. print $buf;
  11. }
  12. @fclose($fh);
  13. } else {
  14. header("HTTP/1.1 404 Not Found");
  15. }
  16. ?>

jeżeli wgram jakiś plik z polskimi znakami w nazwie (np. ąśółżźćńĄŚŹŻĆ.mpe), to przy pobieraniu plików, gdy najadę na link do pliku, w adresie widzę poprawną nazwę z polskimi znakami.
Gdy zaś kliknę "pobierz", to plik jest zapisywany pod nazwą (np. şźźććę₏ąśşźć.mp3)
dzieje się tak tylko pod IE, pod Operą i FF nazwy zapisywanych plików są poprawne.

Dodam, że wszystkie dane na stronie z formularzem oraz baza danych są w kodowaniu UTF-8

Czy ktoś ma pomysł co z tym zrobić?
krowal
Może w tym przypadku to system narzuca kodowanie nazwy pliku jeśli zostanie on ściągnięty i zapisany. Tzn. ściągasz w UTF-8 a system narzuca jakieś inne kodowanie i się gryzą. smile.gif Nie wiem jak to jest naprawdę i nie uważam tego pomysłu za pewnik, ale możesz spróbować wysłać plik w innym kodowaniu. Może będzie dobrze.
Exek
Cytat(wojto @ 18.08.2007, 22:18:41 ) *
header('Content-Disposition: attachment; filename="'.[b]$file->fil_uploaded_filename[/b].'"');


Może tutaj postaraj się coś porobić z nazwą? Skonwertuj ją na parę innych kodowań, może zadziała?
np z utf na win-costam (nie pamietam kodu dla polski)
wojto
próbowałem już wcześniej wysyłać inne dane w nagłówku
także próbowałem konwertować nazwę przez mbstring (iconv nie ma na serwerze), ale nie dawało to rezultatów.

Dziwi mnie najbardziej to, że poprawne nazwy są pobierane przez FF i Opere, a tylko przez IE są krzaki (u moich znajomych podobnie), no i myślałem, że może ktoś miał podobny problem, może trzeba jeszcze jakieś dodatkowe nagłówki nadać.
strife
No cóż IE jest inne, musisz nazwę pliki zakodować w standardowym windowsowym kodowaniu (chyba windows-1250). Otwórz ten plik w windowsowym notatniku i zapisz z polskimi znakami, powinno być ok. Musisz sobie zrobić wersję specjalnie pod IE, aby w tym kodowaniu ta nazwa pliku była ehh.
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.