Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Krzaki zamiast polskich znaków w nazwach plików (tylko pod IE)
wojto
post
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


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ć?
Go to the top of the page
+Quote Post
krowal
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


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ą. (IMG:http://forum.php.pl/style_emoticons/default/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.
Go to the top of the page
+Quote Post
Exek
post
Post #3





Grupa: Zarejestrowani
Postów: 120
Pomógł: 10
Dołączył: 16.08.2007

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


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)

Ten post edytował Exek 19.08.2007, 12:42:07
Go to the top of the page
+Quote Post
wojto
post
Post #4





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


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ć.
Go to the top of the page
+Quote Post
strife
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.12.2025 - 21:39