![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 154 Pomógł: 0 Dołączył: 13.07.2007 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
hej mam metodke : move_uploaded_file($_FILES['Filedata']['tmp_name'], $_POST['path'].$_FILES['Filedata']['name']);
i teraz za jej pomocą uploaduje plik na serwer przy użyciu flesza/swf : http://flash-db.com/Tutorials/upload/upFiles.php?page=1 i mam problem z polskimi znakami, zamienia mi je na krzaczki uploaduje plik : mój plik.jpg i na serwerze zapisuje go : mĂłj plik.jpg dlaczego? Błąd mam po stornie flesza czy move_uploaded_file() nie daje rady? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 386 Pomógł: 25 Dołączył: 28.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
hmm możliwe ze w nagłówkach flash wysyła nazwę pliku w jakimś dziwnym kodowaniu. Jakie kodowanie na serwerze masz ustawione? Serwer to windows? Jak sprawdziłeś z jaką nazwą zapisał się plik? Użyłeś total commandera czy konsoli?
|
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Polskie znaki przy uploadzie konwertują się do takich i jedyną sensowną metodą jest konwersja nazwy pliku do pozbawionego ich, by nie wystąpiły problemy w przyszłości z brakiem możliwości skopiowania lub podejrzenia go.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 386 Pomógł: 25 Dołączył: 28.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zbadałem dokładniej sprawę i oto wnioski (IMG:style_emoticons/default/smile.gif) . Znaki są konwertowane przed wysłaniem przez przeglądarkę na kodowanie zgodne z tym które jest na stronie www. Tzn. że jak na stronie mam utf-8 to wyśle mi nazwę w utf-8. Testowałem na FF 3.5 i na Operze 10.10. Na IE powinno być podobnie. Używam linuxa i mam ustawione kodowanie w systemie na utf-8. Dlatego gdy strona jest w kodowaniu utf to w $_FILES dostaje nazwę pliku w tymże kodowaniu i move_uploaded_file() zapisuje elegancko polskie znaki. Gdy zmienię kodowanie na powiedzmy iso-8859-2 i wyślę plik to funkcja move_uploaded_file() dostanie nazwę pliku z kodowaniem iso i w systemie pokaże mi krzaki zamiast polskich znaków. Dlatego jeśli masz kodowanie znaków w systemie inne niż na stronie z której idzie plik musisz konwertować kodowania. Możesz użyć iconv() albo mb_convert_encoding() (info w manualu). Tak mi się wydaje że flash skoro to wynalazek amerykansky (IMG:style_emoticons/default/smile.gif) to pewnie wysyła wszystko w kodowaniu iso-8859-1. Możesz potestowac co dostajesz skryptem niżej i sprawdzać jakie kodowanie dostajesz od flasha zmieniając ręcznie kodowanie strony w przeglądarce już po wysłaniu pliku.
To kod którym testowałem:
Ten post edytował piotrekkr 17.12.2009, 16:43:36 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 154 Pomógł: 0 Dołączył: 13.07.2007 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Zbadałem dokładniej sprawę i oto wnioski (IMG:style_emoticons/default/smile.gif) . Znaki są konwertowane przed wysłaniem przez przeglądarkę na kodowanie zgodne z tym które jest na stronie www. Tzn. że jak na stronie mam utf-8 to wyśle mi nazwę w utf-8. Testowałem na FF 3.5 i na Operze 10.10. Na IE powinno być podobnie. Używam linuxa i mam ustawione kodowanie w systemie na utf-8. Dlatego gdy strona jest w kodowaniu utf to w $_FILES dostaje nazwę pliku w tymże kodowaniu i move_uploaded_file() zapisuje elegancko polskie znaki. Gdy zmienię kodowanie na powiedzmy iso-8859-2 i wyślę plik to funkcja move_uploaded_file() dostanie nazwę pliku z kodowaniem iso i w systemie pokaże mi krzaki zamiast polskich znaków. Dlatego jeśli masz kodowanie znaków w systemie inne niż na stronie z której idzie plik musisz konwertować kodowania. Możesz użyć iconv() albo mb_convert_encoding() (info w manualu). Tak mi się wydaje że flash skoro to wynalazek amerykansky (IMG:style_emoticons/default/smile.gif) to pewnie wysyła wszystko w kodowaniu iso-8859-1. Możesz potestowac co dostajesz skryptem niżej i sprawdzać jakie kodowanie dostajesz od flasha zmieniając ręcznie kodowanie strony w przeglądarce już po wysłaniu pliku. Chyba jednak to nie to, w ustawieniach publikacji aplikacji mam UTF-8 ( 1.jpg ) i na stronie na ktorej dziala app tyez ma UTF-8 ( 2.jpg ) (IMG:http://filmworks.pl/toolbox/1.jpg) (IMG:http://filmworks.pl/toolbox/2.jpg) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 386 Pomógł: 25 Dołączył: 28.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Chyba się trochę nie zrozumieliśmy (IMG:style_emoticons/default/smile.gif) Ja pisałem o tym jak robi wysyłanie plików przeglądarka. Nie wiem jak robi to flash. Bo przez flasha wysyłane są pliki w twoim przypadku. Dlatego musisz przetestować w skrypcie który odbiera pliki z flasha, w jakim kodowaniu otrzymujesz nazwę pliku. Jak już to będziesz to wiedział to już najtrudniejsze za tobą (IMG:style_emoticons/default/smile.gif) Zapisuj nazwę otrzymaną z flasha w jakimś pliku tekstowym i odpal go zmieniaj kodowania aż trafisz na właściwe i wtedy się dowiesz (IMG:style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 154 Pomógł: 0 Dołączył: 13.07.2007 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Chyba się trochę nie zrozumieliśmy (IMG:style_emoticons/default/smile.gif) Ja pisałem o tym jak robi wysyłanie plików przeglądarka. Nie wiem jak robi to flash. Bo przez flasha wysyłane są pliki w twoim przypadku. Dlatego musisz przetestować w skrypcie który odbiera pliki z flasha, w jakim kodowaniu otrzymujesz nazwę pliku. Jak już to będziesz to wiedział to już najtrudniejsze za tobą (IMG:style_emoticons/default/smile.gif) Zapisuj nazwę otrzymaną z flasha w jakimś pliku tekstowym i odpal go zmieniaj kodowania aż trafisz na właściwe i wtedy się dowiesz (IMG:style_emoticons/default/winksmiley.jpg) Pokombinuje, dzięki za pomoc, EOT (IMG:style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 17:25 |