Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Upload zdjęć na server, problem z $_FILES['plik']['type']
ArczeX
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 14.12.2005

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


Witam...

Mam taki zajebiś... mały problem lecz dla mnie jest on jednak zbyt duży biggrin.gif

A mianowicie znalazłem sobie skrypcik do wgrywania plików na serwer działa bardzo dobrze nie ma z nim problemów lecz chciałem go udoskonalić o funkcję która by pozwalała jedynie na wgrywanie zdjęć jpg i gif i żadnego innego pliku poza tymi dwoma formatami ;]

po godzinnych poszukiwaniach dowiedziałem sie że trzeba cos zmotać z $_FILES['plik']['type'] ale nie wiem jak to zmodyfikować znalazłem pare wzorów w necie ale nie działały mimo tego że wyskakiwało w przeglądarce "niewłaściwy plik" to i tak znajdował się on na servie ;/

Prosze o pomoc !

oto skrypcik który wypadało by przerobić ;]

KO DO UMIESZCZENIA NA STRONIE

  1. <form action="plik2.php" method="POST" ENCTYPE="multipart/form-data">
  2. <input type="file" name="plik"/>
  3. <input type="submit" value="Wyślij plik"/>
  4. </form>
  5. </body>
  6. </html>


PLIK PHP

  1. <?php
  2.  
  3. $max_rozmiar = 1024*1024;
  4. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  5. if ($_FILES['plik']['size'] > $max_rozmiar) {
  6. echo 'Błąd! Plik jest za duży!';
  7. } else {
  8. echo 'Odebrano plik. Początkowa nazwa:  '.$_FILES['plik']['name'];
  9. echo '<br/>';
  10. if (isset($_FILES['plik']['type'])) {
  11. echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
  12.  }
  13. move_uploaded_file($_FILES['plik']['tmp_name'],
  14. $_SERVER['DOCUMENT_ROOT'].'/foto/'.$_FILES['plik']['name']);
  15. }
  16. } else {
  17.  echo 'Błąd przy przesyłaniu danych!';
  18. }
  19.  
  20. ?>
Powód edycji: Dodałem tag w temacie, następnym razem pamiętaj o tym. @drPayton
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
Hazel
post
Post #2





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


  1. <?php
  2. if ($_FILES['plik']['type'] != 'jpeg' && $_FILES['plik']['type'] != 'pjpeg' && $_FILES['plik']['type'] != 'gif')
  3. {
  4. echo 'Nieprawidłowy format pliku!';
  5. }
  6. ?>

Na początku skryptu.

Ten post edytował Hazel 2.01.2008, 18:22:27


--------------------
Go to the top of the page
+Quote Post
ArczeX
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 14.12.2005

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


Dzięki wielkie ;] wszystko ładnie śmiga ;]

A mam jeszcze takie pytanie chciałbym aby po wysłaniu pliku lub jego nie wysłaniu ( Niewłaściwy plik ) pojawiał się przycisk lub link powrotny do strony
Go to the top of the page
+Quote Post
Hazel
post
Post #4





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


  1. <?php
  2. if ($_FILES['plik']['type'] != 'jpeg' && $_FILES['plik']['type'] != 'pjpeg' && $_FILES['plik']['type'] != 'gif')
  3. {
  4. echo 'Nieprawidłowy format pliku!';
  5. }
  6. else
  7. {
  8. $max_rozmiar = 1024*1024;
  9. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  10. if ($_FILES['plik']['size'] > $max_rozmiar) {
  11. echo 'Błąd! Plik jest za duży!';
  12. } else {
  13. echo 'Odebrano plik. Początkowa nazwa:  '.$_FILES['plik']['name'];
  14. echo '<br/>';
  15. if (isset($_FILES['plik']['type'])) {
  16. echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
  17.  }
  18. move_uploaded_file($_FILES['plik']['tmp_name'],
  19. $_SERVER['DOCUMENT_ROOT'].'/foto/'.$_FILES['plik']['name']);
  20. }
  21. } else {
  22.  echo 'Błąd przy przesyłaniu danych!';
  23. }
  24. }
  25. echo '<a href="'.$_SERVER['HTTP_REFERER'].'">Powrót</a>';
  26. ?>

lub zamiast ostatniej linijki:
  1. <?php
  2. echo '<form action="'.$_SERVER['HTTP_REFERER'].'" method="post"><input type="submit" value="Powrót"></form>';
  3. ?>

Tylko zamiast tego index.php musisz wpisać adres strony (da się to zrobić w JS za pomocą history.back(), ale zazwyczaj jak można nie stosować JS to się tego nie robi).
Pozdrawiam.

edit: poprawiłem kod, trochę źle się wczytałem - nie o to chodziło, sorry.

Ten post edytował Hazel 2.01.2008, 18:49:54


--------------------
Go to the top of the page
+Quote Post
ArczeX
post
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 14.12.2005

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


Upss... za wcześnie sie pochwaliłem jest błąd ;/

po dpoisaniu

  1. <?php
  2. if ($_FILES['plik']['type'] != 'jpeg' && $_FILES['plik']['type'] != 'pjpeg' && $_FILES['plik']['type'] != 'gif')
  3. {
  4. echo 'Nieprawidłowy format pliku!';
  5. }
  6. ?>


Jest taki problem że nie wgrywa żadnego pliku nawet JPG czy GIF cały czas wyskakuje "Nieprawidłowy format pliku!"
Go to the top of the page
+Quote Post
Hazel
post
Post #6





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


na początku skryptu napisz:
  1. <?php
  2. print_r($_FILES);
  3. ?>

i zwróć wynik.


--------------------
Go to the top of the page
+Quote Post
ArczeX
post
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 14.12.2005

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


zwrot wygląda następująco

  1. <?php
  2. Array ( [plik] => Array ( [name] => Golf I 043.jpg [type] => image/pjpeg [tmp_name] => /tmp/phpTMukVZ [error] => 0 [size] => 34336 ) ) Nieprawidłowy format pliku!
  3. ?>
Go to the top of the page
+Quote Post
Hazel
post
Post #8





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Kurde, sorry, ciężki dzień miałem ;/
Ośmieszyłem się trochę tongue.gif
Ale to już będzie działać.
  1. <?php
  2. if ($_FILES['plik']['type'] != 'image/jpeg' && $_FILES['plik']['type'] != 'image/pjpeg' && $_FILES['plik']['type'] != 'image/gif')
  3. {
  4. echo 'Nieprawidłowy format pliku!';
  5. }
  6. else
  7. {
  8. $max_rozmiar = 1024*1024;
  9. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  10. if ($_FILES['plik']['size'] > $max_rozmiar) {
  11. echo 'Błąd! Plik jest za duży!';
  12. } else {
  13. echo 'Odebrano plik. Początkowa nazwa:  '.$_FILES['plik']['name'];
  14. echo '<br/>';
  15. if (isset($_FILES['plik']['type'])) {
  16. echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
  17.  }
  18. move_uploaded_file($_FILES['plik']['tmp_name'],
  19. $_SERVER['DOCUMENT_ROOT'].'/foto/'.$_FILES['plik']['name']);
  20. }
  21. } else {
  22.  echo 'Błąd przy przesyłaniu danych!';
  23. }
  24. }
  25. echo '<a href="'.$_SERVER['HTTP_REFERER'].'">Powrót</a>';
  26. ?>

I przy okazji Twój drugi problem też chyba rozwiązuje.
P.S. Internet Explorer nie jest najlepszą przeglądarką winksmiley.jpg

Ten post edytował Hazel 2.01.2008, 18:55:58


--------------------
Go to the top of the page
+Quote Post
ArczeX
post
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 14.12.2005

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


a teraz wywala mi cos takiego ;/

  1. <?php
  2. Odebrano plik. Pocz&#353;tkowa nazwa: Golf IV 398.jpg
  3. Typ: image/jpeg
  4.  
  5. Warning: move_uploaded_file(/home.14/m/o/t/motodwus/www/foto/Golf IV 398.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home.14/m/o/t/motodwus/www/crossy/plik2.php on line 19
  6.  
  7. Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/tmp/php4fzZvM' to '/home.14/m/o/t/motodwus/www/foto/Golf IV 398.jpg' in /home.14/m/o/t/motodwus/www/crossy/plik2.php on line 19
  8. Powrót
  9. ?>


....Nie no sorki juz chyba wiem co jest nie tak ;]

Ten post edytował ArczeX 2.01.2008, 19:17:58
Go to the top of the page
+Quote Post
franki01
post
Post #10





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Katalog gdzie jest uploadowany plik ma chmod 0777?
Go to the top of the page
+Quote Post
ArczeX
post
Post #11





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 14.12.2005

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


Cytat(franki01 @ 2.01.2008, 19:26:15 ) *
Katalog gdzie jest uploadowany plik ma chmod 0777?


Nie nie Folder do wgrywania zdjęć źle umieściłem ;]

A mam jeszcze takie pytanko jak można biggrin.gif

Dało by radę dopisać jakiegoś skrypta który zmieniał by nazwy dodawany plików... tzn.

jakiś koleś dodaje plik o nazwie blebleble.jpg a skrypt zmienia jego nazwe dajmy na to na 1.jpg następny koleś dodaje plik blebleble3456.jpg a skrypt zmienia jego nazwe na 2.jpg

Czy była by taka możliwość ?
Go to the top of the page
+Quote Post
franki01
post
Post #12





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


  1. <?php
  2. $i = 1;
  3. $e = explode('.', $_FILES['plik']['name']);
  4. $ext = $e[(count($e) - 1)];
  5.  
  6. while(file_exists('katalog/'.$i.'.'.$ext)) {
  7. $i++;
  8. }
  9.  
  10. $file = 'katalog/'.$i.'.'.$ext;
  11. ?>


Nazwa pliku bedzie teraz w $file. Mam nadzieje ze dalej wiesz co z tym zrobic winksmiley.jpg
Go to the top of the page
+Quote Post
ArczeX
post
Post #13





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 14.12.2005

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


Cytat(franki01 @ 2.01.2008, 19:45:51 ) *
Nazwa pliku bedzie teraz w $file. Mam nadzieje ze dalej wiesz co z tym zrobic winksmiley.jpg


yyy... troszke kombinowałem ale coś mi nie wychodzi i sorki ale ja dość zielony jestem biggrin.gif
mógłbyś tak krok po kroku napisać o co biega biggrin.gif ?
Go to the top of the page
+Quote Post
franki01
post
Post #14





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


  1. <?php
  2. $i = 1;
  3. $dir = $_SERVER['DOCUMENT_ROOT'].'/foto/';
  4. $e = explode('.', $_FILES['plik']['name']);
  5. $ext = strtolower($e[(count($e) - 1)]);
  6.  
  7. while(file_exists($dir .$i.'.'.$ext)) {
  8. $i++;
  9. }
  10.  
  11. $file = $dir .$i.'.'.$ext;
  12. ?>


Ten kod wstaw nad move_uploaded_file() a sama funkcja move_uploaded_file() niech wyglada tak:
  1. <?php
  2. move_uploaded_file($_FILES['plik']['tmp_name'], $file);
  3. ?>
Go to the top of the page
+Quote Post
ArczeX
post
Post #15





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 14.12.2005

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


No to tak...

Zmodyfikowałem koda następująco (mam nadzieje dobrze biggrin.gif)

  1. <?php
  2. if ($_FILES['plik']['type'] != 'image/jpeg' && $_FILES['plik']['type'] != 'image/pjpeg' && $_FILES['plik']['type'] != 'image/gif')
  3. {
  4. echo 'Nieprawidłowy format pliku!';
  5. }
  6. else
  7. {
  8. $max_rozmiar = 1024*1024;
  9. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  10. if ($_FILES['plik']['size'] > $max_rozmiar) {
  11. echo 'Błąd! Plik jest za duży!';
  12. } else {
  13. echo 'Odebrano plik. Początkowa nazwa:  '.$_FILES['plik']['name'];
  14. echo '<br/>';
  15. if (isset($_FILES['plik']['type'])) {
  16. echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
  17.  }
  18.  $i = 1;
  19. $dir = $_SERVER['DOCUMENT_ROOT'].'/crossy/foto/';
  20. $e = explode('.', $_FILES['plik']['name']);
  21. $ext = strtolower($e[(count($e) - 1)]);
  22.  
  23. while(file_exists($dir .$i.'.'.$ext)) {
  24. $i++;
  25. }
  26.  
  27. $file = $dir .$i.'.'.$ext;
  28. move_uploaded_file($_FILES['plik']['tmp_name'], $file);
  29. $_SERVER['DOCUMENT_ROOT'].'/crossy/foto/'.$_FILES['plik']['name']);
  30. }
  31. } else {
  32.  echo 'Błąd przy przesyłaniu danych!';
  33. }
  34. }
  35. echo '<a href="'.$_SERVER['HTTP_REFERER'].'">Powrót</a>';
  36. ?>


i niestety wywala mi błąd

  1. Parse error: syntax error, unexpected ')' in /home.14/m/o/t/motodwus/www/crossy/plik2.php on line 29


Jak znam życie pewnie coś zmaściłem... tylko teraz pytanie co ?
Go to the top of the page
+Quote Post
Hazel
post
Post #16





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


  1. <?php
  2. if ($_FILES['plik']['type'] != 'image/jpeg' && $_FILES['plik']['type'] != 'image/pjpeg' && $_FILES['plik']['type'] != 'image/gif')
  3. {
  4. echo 'Nieprawidłowy format pliku!';
  5. }
  6. else
  7. {
  8. $max_rozmiar = 1024*1024;
  9. if (is_uploaded_file($_FILES['plik']['tmp_name'])) {
  10. if ($_FILES['plik']['size'] > $max_rozmiar) {
  11. echo 'Błąd! Plik jest za duży!';
  12. } else {
  13. echo 'Odebrano plik. Początkowa nazwa:  '.$_FILES['plik']['name'];
  14. echo '<br/>';
  15. if (isset($_FILES['plik']['type'])) {
  16. echo 'Typ: '.$_FILES['plik']['type'].'<br/>';
  17.  }
  18.  $i = 1;
  19. $dir = $_SERVER['DOCUMENT_ROOT'].'/crossy/foto/';
  20. $e = explode('.', $_FILES['plik']['name']);
  21. $ext = strtolower($e[(count($e) - 1)]);
  22.  
  23. while(file_exists($dir .$i.'.'.$ext)) {
  24. $i++;
  25. }
  26.  
  27. $file = $dir .$i.'.'.$ext;
  28. move_uploaded_file($_FILES['plik']['tmp_name'], $file);
  29. }
  30. } else {
  31.  echo 'Błąd przy przesyłaniu danych!';
  32. }
  33. }
  34. echo '<a href="'.$_SERVER['HTTP_REFERER'].'">Powrót</a>';
  35. ?>

Przed zabieraniem się za takie rzeczy dobrze jest zapoznać się jednak trochę ze składnią języka, manualem i takimi tam głupotami winksmiley.jpg
Cytat(ArczeX)
Zmodyfikowałem koda następująco (mam nadzieje dobrze biggrin.gif)

Pomyśl - jakby było dobrze, to by nie rzucało błędem... Ot tak, na logikę...

Ten post edytował Hazel 2.01.2008, 20:33:37


--------------------
Go to the top of the page
+Quote Post
franki01
post
Post #17





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

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


Bo ta linia to ciag dalszy funkcji move_uploaded_file(). Usun cala linie 29.

EDIT:
@Hazel byl szybszy smile.gif

Ten post edytował franki01 2.01.2008, 20:34:36
Go to the top of the page
+Quote Post
ArczeX
post
Post #18





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 14.12.2005

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


Dzięki wam za wszystko yahoo.gif normalnie zajebiaszczo to działa yahoo.gifyahoo.gifyahoo.gif jak chcecie zobaczyć moją próbną galerie to zapraszam tongue.gif http://www.motodwusuwy.info/crossy/galeria.php sprawdźcie jak śmiga biggrin.gif
Go to the top of the page
+Quote Post
brzuchalski
post
Post #19





Grupa: Zarejestrowani
Postów: 9
Pomógł: 1
Dołączył: 2.01.2008

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


try this one:
  1. <?php
  2. if(!in_array($_FILES['plik']['type'], array('image/jpeg', 'image/pjpeg', 'image/gif'))) {
  3. echo 'Nieprawidłowy format pliku!';
  4.  
  5. } else {
  6. $max_rozmiar = 1024*1024;
  7.  
  8. if(is_uploaded_file($_FILES['plik']['tmp_name']) && $_FILES['plik']['size'] < $max_rozmiar) {
  9.  
  10. echo 'Odebrano plik. Początkowa nazwa: '. $_FILES['plik']['name'] .'
  11. ';
  12. if (isset($_FILES['plik']['type']))
  13. echo 'Typ: '.$_FILES['plik']['type'].'
  14. ';
  15.  
  16. $d = dir($_SERVER['DOCUMENT_ROOT'] .'/crossy/foto/');
  17. $e = (strpos($_FILES['plik']['name'], '.') ? array_pop(explode('.', $_FILES['plik']['name'])) : 'jpg');
  18. $i = 1;
  19. while($file = $d->read())
  20. preg_replace('/([0-9]*).'. $e .'/ie', '$i = (1 > $i ? 1 : $i);', $file);
  21.  
  22. move_uploaded_file($_FILES['plik']['tmp_name'], $d->path . $i .'.'. $e);
  23. } elseif($_FILES['plik']['size'] > $max_rozmiar) {
  24.  
  25. echo 'Błąd! Plik jest za duży!';
  26. } else {
  27.  
  28. echo 'Błąd przy przesyłaniu danych!';
  29. }
  30. }
  31.  
  32. echo '<a href=\"'.$_server['http_referer'].'\">Powrót';
  33.  
  34. ?>


troche estetyki kodu ;) </a href=\"'.$_SERVER['http_referer'].'\"> </a href=\"'.$_server['http_referer'].'\">

Ten post edytował brzuchalski 3.01.2008, 19:32:32


--------------------
-------------------------------------------------------------------
brzuchalski.com
Go to the top of the page
+Quote Post
Hazel
post
Post #20





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Nie dość, że problem rozwiązany, to jeszcze taki kod:
1. Nie jest ani trochę estetyczny (mój też nie jest, ale sam go nie pisałem, jedynie przerabiałem kod ArczeX).
2. Nie działa, bo jest różnica między $_SERVER a $_server.
dry.gif blinksmiley.gif mad.gif
hacking jak trzeba...

Ten post edytował Hazel 3.01.2008, 08:14:11


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 20.08.2025 - 14:49