Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php, mysql] upload pliku, zmiana nazwy
Forum PHP.pl > Forum > Przedszkole
andixxx
w jaki sposob mozna zrobic skrypt do uploadowania plikow (konkretnie chodzi tu tylko o *.jpg), ktory bedzie automatycznie zmienial nazwy plikow np z nazwy "jAkaś_dziWacznaNAzwa.jpg" na liczby kolejno np. 1.jpg, 2.jpg, 3.jpg ... 10.jpg, 11.jpg itd . tzn jezeli mam katalog "grafika" a w nim pliki 1.jpg i 2.jpg, to aby kolejny plik, ktorego nazwa bedzie zmiieniona poprzez uploadowanie mial nazwe 3.jpg, a jezeli mam w tym katalogu pliki 1,2,3,...20,21 i 22.jpg to aby kolejna nazwa jaka zostanie utworzona poprzez upload pliku byla 23.jpg

prosze o pomoc smile.gif
strife
scandir" title="Zobacz w manualu php" target="_manual, potem z takiej tablicy usuwasz rozszerzenia, a ostatniemu elementowi dodajesz + 1 i już masz winksmiley.jpg Jeżeli nie masz php5 to musisz się zadowolić kombinacją z readdir" title="Zobacz w manualu php" target="_manual, potem do tablicy, przesortować, wywalić rozszerzenia i + 1 smile.gif
andixxx
biggrin.gif dzieki:) pomecze sie kilka dni i rozkminie [moze] o co w tym chodzi wszystkim smile.gif

hehe a teraz pytanie z innej beczki strife wiesz moze dlaczego nie chca wgrywac mi sie na serwer zadne pliki poprzez upload? prubowalem juz kilkanascie roznych skryptow i zawsze pokazuje ze sie wgral plik prawidlowo a na serwerze go nie ma..mimo ze wszysktie katalogi maja chmod 777, serwer obsluguje upload plikow do 12M i niby wszystko jest okej a wcale nie jest :| bo pliki sie nie pojawiaja [nie zaleznie jaka bym ustawil sciezke do ich "wgrywania"].. nie pokazuja sie i tyle! angrysmiley.gif dlaczego? jaka moze byc przyczyna tego?
strife
Cytat(andixxx @ 25.06.2006, 02:55 ) *
biggrin.gif dzieki:) pomecze sie kilka dni i rozkminie [moze] o co w tym chodzi wszystkim smile.gif

hehe a teraz pytanie z innej beczki strife wiesz moze dlaczego nie chca wgrywac mi sie na serwer zadne pliki poprzez upload? prubowalem juz kilkanascie roznych skryptow i zawsze pokazuje ze sie wgral plik prawidlowo a na serwerze go nie ma..mimo ze wszysktie katalogi maja chmod 777, serwer obsluguje upload plikow do 12M i niby wszystko jest okej a wcale nie jest :| bo pliki sie nie pojawiaja [nie zaleznie jaka bym ustawil sciezke do ich "wgrywania"].. nie pokazuja sie i tyle! angrysmiley.gif dlaczego? jaka moze byc przyczyna tego?

Podaj więcej danych, u Ciebie na local'u też się nie chcą wgrywać? Pokaż ten skrypt, i co tam wpisujesz w nim, spróbuje Ci pomóc.

ps. "wczesna" godzina tongue.gif
andixxx
hehe wczesna godzina ale i tak zasnolem tongue.gif

  1. <?php
  2. error_reporting( E_ALL );
  3. ini_set( 'displa_errors', 1 );
  4. ?>
  5.  
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
  7. transitional.dtd">
  8. <html>
  9. <head>
  10. <meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
  11. <title>Upload</title>
  12. </head>
  13. <body>
  14.  
  15. <div>
  16. <form enctype="multipart/form-data" action="up.php" method="POST">
  17. <input type="hidden" name="MAX_FILE_SIZE" value="50000" />
  18. <input name="plik" type="file" />
  19. <input type="submit" value="Wyślij plik" />
  20. </form>
  21. </div>
  22.  
  23. <?php
  24. $plik_tmp = $_FILES['plik']['tmp_name'];
  25. $plik_nazwa = $_FILES['plik']['name'];
  26. $plik_rozmiar = $_FILES['plik']['size'];
  27.  
  28. if(is_uploaded_file($plik_tmp)) {
  29.  move_uploaded_file($plik_tmp, "./galeria/foto/$plik_nazwa");
  30. echo "Plik: <strong>$plik_nazwa</strong> o rozmiarze
  31. <strong>$plik_rozmiar bajtów</strong> został przesłany na serwer!";
  32. }
  33. else
  34. echo "Nie udało się wysłać pliku <strong>$plik_nazwa</strong> na serwer";
  35. ?>
  36. </body>
  37. </html>


pokazuje blad:
Cytat
Notice: Undefined index: plik in /home/users/rozek_andi/www/up.php on line 24
Notice: Undefined index: plik in /home/users/rozek_andi/www/up.php on line 25
Notice: Undefined index: plik in /home/users/rozek_andi/www/up.php on line 26


a sam skrypt od razu na dziendobry wita mnie komunikatem "Nie udało się wysłać pliku na serwer" smile.gif
dlaczego?.. dodam, ze skrypt pochodzi z http://www.kess.snug.pl/?sid=10&pid=38 i dziala innym, a mi nie..
strife licze na Ciebie smile.gif no i oczywiscie na innych tez smile.gif

aha.. bez
  1. <?php
  2. error_reporting( E_ALL );
  3. ini_set( 'displa_errors', 1 );
  4. ?>

pokazuje tylko "Nie udało się wysłać pliku na serwer" tongue.gif
strife
Dzieńdobry biggrin.gif

Sprawdzałem u siebie ten skrypt na Windows'ie i działa, sprawdzałem u siebie na serwerze płatnym i .. działa. Musisz ustawić chmod, na katalog upload 777. Tak patrzę na ten Twój skrypt hmm.. może masz podaną złą ścieżkę, a mianowicie chodzi mi o tą linijkę:
  1. <?php
  2. move_uploaded_file($plik_tmp, './galeria/foto/$plik_nazwa');
  3. ?>

spróbuj to zmienić i narazie odpalić skrypt tak jak sugeruje strona, którą podałeś. ( czyli tworzysz katalog upload z chmod'em 0777 ).

Ja pamiętam, że swojego czasu miałem problem z użyciem, move_uploaded_file" title="Zobacz w manualu php" target="_manual, pamiętam, że wtedy poradziłem sobie z tym za pomocą copy" title="Zobacz w manualu php" target="_manual, podając jako drugi argument adres na serwerze, czyli jeżeli dotychczas nadal Ci nie działa spróbuj:
  1. <?php
  2. copy( $plik_tmp, '/home/club/public_html/poligon/upload/upload/$plik_nazwa' ); // na linux'ie
  3. // ...
  4. copy( $plik_tmp, 'd:/$plik_nazwa'); // na windowsie
  5. ?>

Podałem tutaj, przykładowe dane działające u mnie w hostingu, ale mam nadzieję, że załapiesz o co chodzi, i podmienisz sobie na swoje dane smile.gif

To Tyle, mam nadzieję, że Tym razem Ci zadziała smile.gif

ps. może popróbuj też z małymi plikami 20 kB etc.
andixxx
hehe dobry wieczor strife:)
no wiec serwer stoi na linuxie (zobacz zreszta sam mojej phpinfo())
katalog galeria znajdujacy sie w roocie tongue.gif ma chmod 777 a w nim podkatalog foto tez ma chmoda 777 tongue.gif
moze zmienic sciezke
  1. <?php
  2. move_uploaded_file($plik_tmp, './galeria/foto/$plik_nazwa');
  3. ?>

na
  1. <?php
  2. move_uploaded_file($plik_tmp, '/home/users/rozek_andi/www/galeria/foto/$plik_nazwa');
  3. ?>

...? ale jezeli zmienie na /home/users/rozek_andi/www/ a pozniej o tym zapomne, to przy przeniesieniu strony na inny serwer bedzie problem znow tongue.gif
z malymi plikami tez prubowalem i nie dziala niestety:( to samo wyskakuje...
ide sie umyc:D jak wroce to zamienie move_uploaded_file" title="Zobacz w manualu php" target="_manual na copy" title="Zobacz w manualu php" target="_manual i zobaczymy co z tego wyjdzie...

i jeszcze jedno pytanko.. co znaczy
Cytat
Notice: Undefined variable: _FILE in /home/users/rozek_andi/www/up.php on line 24
Notice: Undefined variable: _FILE in /home/users/rozek_andi/www/up.php on line 25
Notice: Undefined variable: _FILE in /home/users/rozek_andi/www/up.php on line 26
ktore wyskakuje gdy na poczatku kodu dodam
  1. <?php
  2. error_reporting( E_ALL );
  3. ini_set( 'displa_errors', 1 );
  4. ?>
?
strife
Hehe, widzę to już tradycja, że będziemy się spotykać wieczorami laugh.gif Spróbuj z drugą wersją z » copy" title="Zobacz w manualu php" target="_manual, którą podałem powyżej. A tymczasem odpowiem na drugie pytanie, otóż te błędy oznaczają, brak istnienia tych zmiennych, zauważ, że te zmienne pojawiają się dopiero wtedy, gdy wysyłamy formularz, więc na pozycji startowej skrypt będzie pokazywał te błędy, można się przed tym zabezpieczyć stosując prosty warunek:

  1. <?php
  2. // zamiast $_FILES['plik']['name'] moze być też
  3. // również inne pole w formularzu
  4. // chodzi generalnie o sprawdzenie
  5. // czy dane zostały przesłane
  6. // a wtedy zadeklarowanie tych zmiennych
  7.  
  8. if ( isset ( $_FILES['plik']['name'] ) )
  9. {
  10. // deklaracja pozostalych zmiennych juz bez bledu bedzie
  11. }
  12. ?>


No to czekam, jak coś chętnie pomogę też na gg smile.gif Dodam, jeszcze, że problem stanowi gdzieś w konfiguracji albo coś źle robisz bo u mnie działa na 100% więc wiesz..

Oczywiście literówka w display_errors jest u Ciebie przypadkowa rozumiem... Na przyszłość jak będziesz pisać to rób wszystko z pokazywaniem wszystkich błędów, unikniesz późniejszych błędów w pisaniu smile.gif
andixxx
ale ladny poranek prawda strife biggrin.gif
hehe sluchaj... zmienilem move_uploaded_file" title="Zobacz w manualu php" target="_manual na copy" title="Zobacz w manualu php" target="_manual i .. dalej to samo.. jezeli wysle plik do 50KB tak jak jest ustawnione ograniczenie w skrypcie tutaj
  1. <?php
  2. <input type="hidden" name="MAX_FILE_SIZE" value="50000" />
  3. ?>

pokazuje ze plik zostal wyslany prawidlowo a na serwerze sie nie pokazuje, jezeli wysle wiekszy plik, od razu pisze ze plik nie zostal wyslany... smile.gif prubowalem pozamieniac sciezki w skrypcie na katalog glowny serwera, tam gdzie znajduje swoje miejsce plik up2.php to:
  1. <?php
  2. move_uploaded_file($plik_tmp, '$plik_nazwa'); //pokazuje
  3. //Warning: move_uploaded_file(Untitled-1 copy.gif): failed to open stream: Permission denied in /home/users/rozek_andi/www/up2.php on line 29
  4. //Warning: move_uploaded_file(): Unable to move '/tmp2/phpZyzjA2' to 'Untitled-1 copy.gif' in /home/users/rozek_andi/www/up2.php on line 29
  5.  
  6. move_uploaded_file( $plik_tmp, "/home/users/rozek_andi/www/$plik_nazwa"); //pokazuje
  7. //Warning: move_uploaded_file(/home/users/rozek_andi/www/Untitled-1 copy.gif): failed to open stream: Permission denied in /home/users/rozek_andi/www/up2.php on line 29
  8. //Warning: move_uploaded_file(): Unable to move '/tmp2/phpnoceHi' to '/home/users/rozek_andi/www/Untitled-1 copy.gif' in /home/users/rozek_andi/www/up2.php on line 29
  9.  
  10. copy( $plik_tmp, "/home/users/rozek_andi/www/$plik_nazwa"); //pokazuje
  11. //Warning: copy(/home/users/rozek_andi/www/Untitled-1 copy.gif): failed to open stream: Permission denied in /home/users/rozek_andi/www/up2.php on line 29
  12.  
  13. copy( $plik_tmp, "$plik_nazwa"); //pokazuje
  14. //Warning: copy(Untitled-1 copy.gif): failed to open stream: Permission denied in /home/users/rozek_andi/www/up2.php on line 29
  15. ?>

pokazuje z eplik zostal wyslany i od razu pokazuje powyzsze bledy, jesli chce wyslac plik do katalogu glownego, tam gdzie jestplik up2.php
a jezeli zmienie w ktoryms z tych 4 powyzszych sciezke z
  1. <?php
  2. $plik_tmp, '$plik_nazwa'
  3. ?>

na
  1. <?php
  2. $plik_tmp, 'galeria/foto/$plik_nazwa'
  3. //lub
  4. $plik_tmp, '/home/users/rozek_andi/www/galeria/foto/$plik_nazwa'
  5. ?>

to pokazuje tylko ze plik zostal wyslany poprawnie, bez zadnych bledow, ale i tak go nie ma nie pokazuje sie na serwerze sad.gif wrr

ps. ale na pocieszenie dodam, ze raz, ale to tylko raz:D udalo sie przeslac plik, do katalogu galeria/foto/ biggrin.gif az sie ucieszylem.. ale za wczesnie, bo wiecej [nawet na tym samym skrypcie co sie udalo] plik sie nie pojawil :| hehe pozdrawiam i licze na to ze w koncu nam sie uda:D
strife
Witam, dopiero wstałem tongue.gif

Nie będę pisał, że to dziwne, że Ci nie działa bo to jest jasne, więc przejdę do konkretów. W drugim kodzie php, który załączyłeś błędy są spowodowane brakiem uprawnień do zapisu na ten katalog, w tym przypadku katalog główny ( www ), a na ten katalog lepiej nie zmieniać uprawnień, dlatego też zrób to w katalogu foto, na serwerze głównym, ścieżka będzie wtedy:

  1. <?php
  2. copy( $plik_tmp, '/home/users/rozek_andi/www/foto/$plik_nazwa');
  3. ?>

Pamiętaj, aby na katalog foto zmienić chmod, na 0777 możesz to zrobić w łatwy sposób Total Commander'em, ale to zapewne wiesz...

Coś takiego musi działać. Powiedz mi jeszcze w jaki sposób sprawdzasz czy dany plik pojawił się na serwerze, jeżeli przez włączonego Total Commander'a to zmiany będą widoczne po odświeżeniu, po ponownym zalogowaniu na ftp, więc może w tym tkwi problem. Spróbuj sprawdzać, czy dane pliki zostały przesłane za pomocą listingu plików apache'a - jeżeli możesz sobie coś takiego włączyć.

Jeśli nadal Ci nie działa, to żeby już nie ciągnąć tej dyskusji dalej i zaśmiecać niepotrzebnie forum, napisz mi PW dane na ten serwer, z hasłem i loginem, a ja zrobię wyjątek i to sprawdzę, edytując posta wyjaśniając publicznie co było źle, oczywiście jeżeli chcesz i możesz mi te dane podać.

Pozdrawiam
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.