Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Nazwa pliku po zmianie nazwy., Funkcja rename
5w155
post 24.08.2009, 14:40:05
Post #1





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 27.01.2009

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


Witam!
Użyłem funkcji rename w następujący sposób:
  1. rename('../okladki/'.$_FILES['Plik']['name'], '../okladki/'.$id_p_1);

Chciałbym teraz wydobyć nazwę pliku po zmianie wraz z rozszrzeniem.
Jak to zrobić?
Go to the top of the page
+Quote Post
krowal
post 24.08.2009, 14:43:16
Post #2





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

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


Zmienna $id_p_1 zawiera przecież nazwę pliku, co dokładnie chciałbyś osiągnąć ?


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
5w155
post 24.08.2009, 14:44:43
Post #3





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 27.01.2009

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


rozszerzenie.
Go to the top of the page
+Quote Post
krowal
post 24.08.2009, 14:50:18
Post #4





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

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


Najprościej:
  1. <?php
  2. $fileData = explode('.', $id_p_1);
  3. if (isset($fileData[1])){
  4. echo 'rozszerzenie: '.$fileData[1];
  5. }else{
  6. echo 'brak rozszerzenia';
  7. }
  8. ?>

Edit: Zakładając, że plik zawsze składa się tylko z dwóch członów oddzielonych kropką winksmiley.jpg

Ten post edytował krowal 24.08.2009, 14:52:35


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
5w155
post 24.08.2009, 14:53:12
Post #5





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 27.01.2009

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


To niestety mnie nie ustawia, bo zmienna $id_p_1 nie ma w sobie rozszerzenia. Tylko nazwę. Więc explode nie będzie tu rozwiązaniem.
Może da się jakoś wykorzystać $_FILE['Plik']['type'] ?

A explode'a po kropce mógłbym wykorzystać, bo nazwa będzie jednoczłonowa.

Ten post edytował 5w155 24.08.2009, 14:55:09
Go to the top of the page
+Quote Post
krowal
post 24.08.2009, 15:02:27
Post #6





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

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


No to chcesz rozszerzenie czy 'mime type' ? bo z $_FILES['file']['type'] dostaniesz właśnie mime type czyli np 'image/gif'. Pamiętaj jednak, że nie jest to wartość generowana przez php a otrzymywana z przeglądarki przy uploadzie pliku. Dlatego np. typ .png może być inny jeśli uploadujesz przez FF i inny jeśli wrzucasz go przez IE (image/x-png albo image/png).


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
5w155
post 24.08.2009, 15:08:10
Post #7





Grupa: Zarejestrowani
Postów: 51
Pomógł: 0
Dołączył: 27.01.2009

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


Chcę po prostu uzyskać rozszerzenie uploadowanego pliku. Koniec.

EDIT: Dobra. Załatwiłem to dość łopatologicznie. W razie znajdę inne rozwiązanie to zastosuję. Po prostu robie explode'a na $_FILE['Plik']['name'] i stamtąd biorę rozszerzenie i dopisuję do $id_p_1. Troche lipa... ale działa smile.gif REP dla Ciebie!

Ten post edytował 5w155 24.08.2009, 15:12:27
Go to the top of the page
+Quote Post
krowal
post 24.08.2009, 15:12:12
Post #8





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

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


Możesz jeszcze użyć explode na $_FILES['file']['name'].

edit: jw. spóźniłem się smile.gif

Ten post edytował krowal 24.08.2009, 15:12:51


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
thek
post 24.08.2009, 16:58:20
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Ja bym nieco uważał przy explode i po takim działaniu użył array_pop sprawdzając co zwraca. Pliki mogą, jak sam wiesz zapewne, mieć w nazwie wiele kropek, lub wcale, a nas interesuje ostatni człon. Poza tym w razie wywołania popa na pliku bez rozszerzenia wywali nam nazwę pliku smile.gif
Czyli:
  1. if ( ($rozszerzenie = array_pop( explode( '.', $_FILES['file']['name'] ) ) ) != $_FILES['file']['name'] )
  2. echo 'To plik o rozszerzeniu: '.$rozszerzenie;
  3. else
  4. echo 'Błąd! Ten plik nie ma rozszerzenia';


Ten post edytował thek 24.08.2009, 17:04:07


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post
Crozin
post 24.08.2009, 18:00:00
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Yyy... polecam manual: pathinfo
Go to the top of the page
+Quote Post
Fifi209
post 24.08.2009, 18:03:57
Post #11





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Cytat(thek @ 24.08.2009, 16:58:20 ) *
Ja bym nieco uważał przy explode i po takim działaniu użył array_pop sprawdzając co zwraca. Pliki mogą, jak sam wiesz zapewne, mieć w nazwie wiele kropek, lub wcale, a nas interesuje ostatni człon. Poza tym w razie wywołania popa na pliku bez rozszerzenia wywali nam nazwę pliku smile.gif
Czyli:
  1. if ( ($rozszerzenie = array_pop( explode( '.', $_FILES['file']['name'] ) ) ) != $_FILES['file']['name'] )
  2. echo 'To plik o rozszerzeniu: '.$rozszerzenie;
  3. else
  4. echo 'Błąd! Ten plik nie ma rozszerzenia';


nie prościej:
  1. $rozszerzenie = end(explode('.', $_FILES['file']['name']));

?

Poza tym jest funkcja, o której mówił przedmówca stworzona właśnie do tego celu...


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
thek
post 24.08.2009, 21:20:40
Post #12





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pathinfo najlepsze.
Fifi... pop i end zadziałają identycznie smile.gif End ustawia wskaźnik na ostatni element i zwraca go. Pop usuwa ostatni element i zwraca go :] Ja dodałem if dodatkowy by zwyczajnie poinformować usera co mu zwracamy. Zauważ bowiem, że Ty zwrócisz nazwę pliku jeśli nie ma on rozszerzenia, a ja ifem jeszcze sprawdzam czy aby nie mamy sytuacji, że ktoś przesłal plik bez rozszerzenia w nazwie. Ale równie dobrze można POP zastąpić END w moim przykładzie i efekt będzie identyczny. W tym przypadku obie funkcje mogą się wzajemnie zastępować. Gdybyśmy bez tego IF zostawili, to dla pliku "shadow" $rozszerzenie miała by wartość "shadow", ale z IFem wywali, że plik nie ma rozszerzenia smile.gif A pliki bez rozszerzenia są powszechne na linuxie dla przykładu, bo on ich zwyczajnie nie potrzebuje. Nie samym windowsem żyje świat. Poza tym coś takiego jak "nie ufaj danym przesłanym przez usera" jest zawsze prawdziwe. A nazwa pliku też jest daną z forma i trzeba na nią zwracać uwagę smile.gif


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
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 Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:17