Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zmiana nazwy pliku
Forum PHP.pl > Forum > Przedszkole
-RazoR2011-
Cześć!
Posiadam hosting obrazków. Jednak obrazki które przesyłam na serwer, nadal posiadają swoją starą nazwę (mogą wystąpić błędy podczas wysłania obrazków o tej samej nazwie). Więc postanowiłem że zrobię pętle która będzie generowała mi 35 cyfrowy kod. Jednak nie wiem dlaczego, ale skrypt nei działa poprawnie, tzn. uploaduje obrazki, ale nie zmienia już nazwy. Pokazuje się tekst: [b]Warning: rename(upload/520dIMG_4484.JPG,6) [function.rename]: Nie mo�na odnale�� okre�lonego pliku. (code: 2) in D:\WebServ\httpd\dziala\index.php on line 36

Mój kod skryptu:
  1. if(is_uploaded_file($plik_tmp)) {[/b]
  2. move_uploaded_file($plik_tmp, "upload/$plik_nazwa");
  3. for($x=1;$x<35;$x++) {
  4. $i = rand(1,9);
  5. };
  6. rename("upload/$plik_nazwa", "$i");
Daimos
sprawdź sobie dokładną ścieżkę na serwerze, gdzie jest katalog upload (uruchom w nim plik z poleceniem getcwd(), jeśli sam nie wiesz). Jak już będziesz to wiedział, to spróbuj operować na pliku podając całą ścieżkę, a nie tylko relatywnie upload/.
I weź pod uwagę fakt, że jeśli robisz rename('/upload/cos.jpg', '1') to oprócz zmiany nazwy pliku z cos.jpg na "1", to przeniesiesz tez ten plik katalog wyżej, więc poprawnie powinno być: rename('/upload/cos.jpg', '/upload/1');
-RazoR2011-
Wyrzuciło mi błąd:
Warning: rename(/upload/$plik_nazwa,/upload/$i) [function.rename]: System nie może odnaleŸć okreœlonej œcieżki. (code: 3) in D:\WebServ\httpd\dziala\index.php on line 23

linijka 23
  1. rename('/upload/$plik_nazwa', '/upload/$i');
Daimos
a mógłbyś przeczytać wszystko co napisałem?
Bartek Skwara
Jeżeli chcesz użyć zmiennych w ciągu znaków to użyj " " zamiast ' ' albo użyj łączenia ciągów przy użyciu kropki.
  1. rename('/upload/'.$plik_nazwa, '/upload/'.$i);

Teraz podałeś do php ścieżkę /upload/$plik_nazwa - dosłownie smile.gif
-RazoR2011-
juz wszystko śmiga, tylko że następuje zmiana nazwy na zmienną $i (powinna być 35 cyfrowa) która zawiera tylko jedną liczbę. Jak to naprawić?
Turson
  1. $i = 0;
  2. for($x=1;$x<=35;$x++) {
  3. $i.= rand(1,9);
  4. };
  5.  
  6. echo $i;
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.