Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]upload obrazkow - 3 pytania
Forum PHP.pl > Forum > Przedszkole
Matiash
witam otoz korzystam z takiego uploadu:
http://minigra.ovh.org/example1.html ( chodzi o sam upload )

moj kod php jest taki:
  1. <?php
  2.  
  3. $currentdir=getcwd();
  4.  
  5. $currentdir= "./pliki/".date('dmyHis')."/";
  6. mkdir($currentdir ,0777);//tworzymy katalog
  7. $plik=fopen($currentdir."opis.txt","w+");
  8. fputs($plik,"Imię i nazwisko:".chr(10).$_POST['imie'].chr(10).chr(10)."Adres email:".chr(10).$_POST['email'].chr(10).chr(10)."Kategoria:".chr(10).$_POST['kategoria'].chr(10).chr(10)."Tytuł:".chr(10).$_POST['tytul'].chr(10).chr(10)."Tre¶ć wiadomo¶ci:".chr(10).$_POST['tresc'].chr(10).chr(10)."Dodano: ".chr(10).date("d F Y, H:i"));
  9. fclose($plik); 
  10. echo "Dziękujemy za przesłanie relacji. Do 24 h powinna ukazać się na stronie.<br /><br />";
  11.  
  12. foreach($_FILES as $file)
  13. {
  14.  
  15. $wynik = strtr($file['name'], 'ĘÓˇ¦ŁŻ¬Ńęó±¶łżĽćń ', 'EOASLZZCNeoaslzzcn_');
  16. move_uploaded_file($file['tmp_name'],$currentdir.$wynik);
  17. }
  18. chmod($currentdir.$wynik, 0644);
  19. echo "<img src=".$currentdir.$wynik.">";
  20.  
  21. ?>


1. Czy ktos moglby mi pomoc zrobic tak aby maks file size nie przekraczalo 200 kb

2. Nie wiem dlaczego ale jak wgrywam np 10 zdjec, to chmod 644 ustawia mi sie tylko do ostatniego pliku reszta ma 600 a ja chcialbym miec do wszystkich 644

3. Po wgraniu plikow mam tak zrobione ze wyswietlaja mi sie wszystkie wgrane pliki, jednak tak nie jest bo wyswietla sie ostatni ze wszystkich wgranych plikow, co jest przyczyna ?

Dziekuje za odpowiedzi i Pozdrawiam.


aha moze wgrac jakiees wlasne pliki i zobaczycie ze tylko jedno zdjecie sie pokazuje po wgraniu ( ja u siebie na serwerze mam je wszystkei wgrane ale coz kiedy tylko ostatnie sie wyswietla ) W pola oznaczone gwiazdkami Wpiszcie obojetnie co.
Void
Ad 1. Przy wysyłaniu pliku, w pętli foreach dodaj warunek sprawdzaj±cy rozmiar pliku, pobrany z tablicy $_FILES.
  1. <?php
  2. if ($file['size'] < 204800) { // rozmiar podaje się w bajtach, 204800 B = 200 KB
  3.  
  4. if ( move_uploaded_file($file['tmp_name'],$currentdir.$wynik) ) {
  5. echo 'plik został umieszczony na serwerze';
  6. } else {
  7. echo 'bł±d podczas wysyłania pliku';
  8. }
  9.  
  10. } else {
  11. echo 'zbyt duży rozmiar pliku';
  12. }
  13. ?>


Ad 2,3. Po prostu za wcze¶nie zamkn±łe¶ pętle foreach, uprawnienia zmieniane s± ostatniemu plikowi, tak samo ostatnie zdjęcie zostaje wy¶wietlane. Powinno być

  1. <?php
  2. foreach($_FILES as $file) {
  3.  
  4. $wynik = strtr($file['name'], 'ĘÓˇ¦ŁŻ¬Ńęó±¶łżĽćń ', 'EOASLZZCNeoaslzzcn_');
  5.  
  6. if ($file['size'] < 204800) { // rozmiar podaje się w bajtach, 204800 B = 200 KB
  7. if ( move_uploaded_file($file['tmp_name'],$currentdir.$wynik) ) {
  8. echo 'plik został umieszczony na serwerze';
  9. } else {
  10. echo 'bł±d podczas wysyłania pliku';
  11. }
  12. } else {
  13. echo 'zbyt duży rozmiar pliku';
  14. }
  15.  
  16. chmod($currentdir.$wynik, 0644);
  17. echo '<img src="'.$currentdir.$wynik.'">';
  18.  
  19. }
  20. ?>
Matiash
Dzieki Void, Twoj skrypt działa jednak po zdefiniowaniu $currentdir - wyskakkuja mi bledy.

  1. <?php
  2. $currentdir=getcwd();
  3.  
  4. $currentdir= "./pliki/".date('dmyHis')."/";
  5. mkdir($currentdir ,0777);//tworzymy katalog
  6. $plik=fopen($currentdir."opis.txt","w+");
  7. fputs($plik,"Imię i nazwisko:".chr(10).$_POST['imie'].chr(10).chr(10)."Adres email:".chr(10).$_POST['email'].chr(10).chr(10)."Kategoria:".chr(10).$_POST['kategoria'].chr(10).chr(10)."Tytuł:".chr(10).$_POST['tytul'].chr(10).chr(10)."Tre¶ć wiadomo¶ci:".chr(10).$_POST['tresc'].chr(10).chr(10)."Dodano: ".chr(10).date("d F Y, H:i"));
  8. fclose($plik); 
  9. echo "Dziękujemy za przesłanie relacji. Do 24 h powinna ukazać się na stronie.<br /><br />";
  10.  
  11. foreach($_FILES as $file) {
  12.  
  13. $wynik = strtr($file['name'], 'ĘÓˇ¦ŁŻ¬Ńęó±¶łżĽćń ', 'EOASLZZCNeoaslzzcn_');
  14.  
  15. if ($file['size'] < 204800) { // rozmiar podaje się w bajtach, 204800 B = 200 KB
  16. if ( move_uploaded_file($file['tmp_name'],$currentdir.$wynik) ) {
  17. echo 'plik został umieszczony na serwerze';
  18. } else {
  19. echo 'bł±d podczas wysyłania pliku';
  20. }
  21. } else {
  22. echo 'zbyt duży rozmiar pliku';
  23. }
  24.  
  25. chmod($currentdir.$wynik, 0644);
  26. echo '<img src="'.$currentdir.$wynik.'">';
  27.  
  28. }
  29. ?>


Wyskakuje takie cos :
Dziękujemy za przesłanie relacji. Do 24 h powinna ukazać się na stronie.

bł±d podczas wysyłania pliku
Warning: move_uploaded_file(./pliki/130607113437/PICT0n899.JPG) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/m/i/n/minigra/www/upload1.php on line 16

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/home/tmp/phpcRU3oi' to './pliki/130607113437/PICT0n899.JPG' in /home/m/i/n/minigra/www/upload1.php on line 16
bł±d podczas wysyłania pliku
Warning: chmod() [function.chmod]: Unable to access ./pliki/130607113437/PICT0n899.JPG in /home/m/i/n/minigra/www/upload1.php on line 25

Warning: chmod() [function.chmod]: stat failed for ./pliki/130607113437/PICT0n899.JPG in /home/m/i/n/minigra/www/upload1.php on line 25

Warning: move_uploaded_file(./pliki/130607113437/1.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /home/m/i/n/minigra/www/upload1.php on line 16

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/home/tmp/phphLXZwN' to './pliki/130607113437/1.jpg' in /home/m/i/n/minigra/www/upload1.php on line 16
bł±d podczas wysyłania pliku
Warning: chmod() [function.chmod]: Unable to access ./pliki/130607113437/1.jpg in /home/m/i/n/minigra/www/upload1.php on line 25

Warning: chmod() [function.chmod]: stat failed for ./pliki/130607113437/1.jpg in /home/m/i/n/minigra/www/upload1.php on line 25


W ogole jak sie utworzy ten katalog co go mam zdefiniowany $currentdir= "./pliki/".date('dmyHis')."/"; i wejde na ftp'a i jak chce do niego wejsc to wyskakuje permission denied. Wiec mysle ze dlatego obrazki nie chca sie wgrac.

nie wiem czemu ten nowo utworzony katalog ma chmod 0644- to pewnie jest przyczyna, ale przeciez zdefiniowalem zeby mial 0777.

Dobra poradzilem sobie definiujac chmoda jeszcze raz dla $currentdir. Teraz dziala prawie wszystko ok, tzn zdjecia pojawiaja sie po wgraniu, folder sie tworzy itp, jednak za kazdym razem pod pierwszym zdjeciem pojawia sie napisa: "blad podczas wysylania pliku".
nexis
Jak± masz wersję silnika PHP na serwerze?

Kto¶ w manualu napisał, że:

  1. <?php
  2. mkdir('/home/benge/photos/gallery1/extra_large/', 0777);
  3. ?>


nie działa i należy zrobić tak:

  1. <?php
  2. mkdir('/home/benge/photos/gallery1/extra_large', 0777);
  3. ?>


Czyli należy wpisać katalog bez ostatniego slasha.
Matiash
serwer mam na ovh, wiec wersja to 5
nexis
A próbowałe¶ z podanym przeze mnie rozwi±zaniem?
Matiash
nexis, tak teraz sprobowalem i tez dziala, dzieki smile.gif

A co to moze byc ze za kazdym razem pod pierwszym zdjeciem pojawia mi sie napisz " blad przesylania plikow" ?
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.