Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]wgrywanie plików przez użyytkowników
sweter
post 21.01.2009, 22:10:00
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


Spisałem z mojej książki skrypt do wgrywania plików przez użytkowników na serwer. Oto on:
  1. <?php
  2. if(!is_uploaded_file($HTTP_POST_FILES['zdjecie']['tmp_name'])){
  3.        echo "Pliku nie przeslano";
  4.        unlink($HTTP_POST_FILES['zdjecie']['tmp_name']);
  5.      }else{
  6.        /*przetwarzanie pliku*/
  7.        $maksymalny_rozmiar_pliku=102400;
  8.          if($HTTP_POST_FILES['zdjecie']['size'] > $maksymalny_rozmiar_pliku){
  9.            echo "Rozmiar pliku nie może przekroczyć 100 kB";
  10.            unlink($HTTP_POST_FILES['zdjecie']['tmp_name']);
  11.          }else{
  12.            /*przetwarzanie pliku*/
  13.            if($HTTP_POST_FILES['zdjecie']['type'] != "image/gif" AND
  14.           $HTTP_POST_FILES['zdjecie']['type'] != "image/pjpeg" AND
  15.           $HTTP_POST_FILES['zdjecie']['type'] != "image/jpeg"){
  16.               echo "Można pzesyłać jednynie pliki z rozszerzeniem .jpg i .gif";
  17.               unlink($HTTP_POST_FILES['zdjecie']['tmp_name']);
  18.        }else{
  19.               /*format plik jest poprawny*/
  20.               echo "ok";
  21.            }
  22.          }
  23.      }
  24. ?>

Jednak wciąż pojawia mi się napis "Pliku nie przeslano".
Poza tym wyświetla mi się błąd: "Warning: unlink() [function.unlink]: No such file or directory in (wskazuje na pierwszą funkcję unlink)";

Co trzeba naprawić?
Powód edycji: do php używaj bbcode php, a nie code


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
erix
post 21.01.2009, 22:17:43
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




  1. <?php
  2. $HTTP_POST_FILES
  3. ?>

Coś stara ta książka...

Sprawdzałeś w ogóle użycie w manualu? is_uploaded_file" title="Zobacz w manualu PHP" target="_manual


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
homik
post 21.01.2009, 22:25:43
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 4.09.2008

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


Jeżeli robiłeś to z takiego formularza:
  1. <form enctype="multipart/form-data" action="upload.php" method="POST">
  2. <input type="hidden" name="MAX_FILE_SIZE" value="30000" /> /* maksymalna wielkość pliku w bajtach */
  3. Plik do wysłania: <input name="userfile" type="file" />
  4. <input type="submit" value="Wyślij" />
  5. </form>

gdzie jest pole typu file, to wszystkie informacje odnośnie tego pliku znajdziesz w tablicy $_FILES.
Wg mnie powinienes zamienić $HTTP_POST_FILES na $_FILES.
Jesli pole <input type="file"> ma właściwośc name="zdjecia", to zamiast $HTTP_POST_FILES['zdjecia'] zostawiasz $_FILES['zdjecia'].

http://webmade.org/porady/upload-plikow-wg...-serwer-php.php
Tam więcej się dowiesz.

Ten post edytował homik 21.01.2009, 22:26:43
Go to the top of the page
+Quote Post
sweter
post 25.01.2009, 22:00:28
Post #4





Grupa: Zarejestrowani
Postów: 623
Pomógł: 11
Dołączył: 1.01.2009
Skąd: Wrocław

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


Okej. zmieniłem według waszych rad $HTTP_POST_FILES na $FILES i w pierwszym if'ie usunąłem "!".
kod wygląda teraz tak:
Kod
  if(isset($_SESSION['login'])){
      if(is_uploaded_file($FILES['zdjecie']['tmp_name'])){
        echo "Pliku nie prezeslano";
        unlink($FILES['zdjecie']['tmp_name']);
      }else{
        /*przetwarzanie pliku*/
        $maksymalny_rozmiar_pliku=102400;
          if($FILES['zdjecie']['size'] > $maksymalny_rozmiar_pliku){
            echo "Rozmiar pliku nie może przekroczyć 100 kB";
            unlink($FILES['zdjecie']['tmp_name']);
          }else{
            /*przetwarzanie pliku*/
            if($FILES['zdjecie']['type'] != "image/gif" AND
           $FILES['zdjecie']['type'] != "image/pjpeg" AND
           $FILES['zdjecie']['type'] != "image/jpeg"){
               echo "Można pzesyłać jednynie pliki z rozszerzeniem .jpg i .gif";
               unlink($FILES['zdjecie']['tmp_name']);
        }else{
               /*format plik jest poprawny*/
               echo "ok";
            }
          }
      }
    }

Jednak teraz występuje mi błąd w linijce z ostatnią funkcją unlink(). Brzmi on tak:
Cytat
Warning: unlink() [function.unlink]: No such file or directory in C:\Program Files\WebServ\httpd-users\siedlczanin.net\uzytkownicy\wgranie_zdjecia.php on line 111


Poza tym wyświetla mi się komunikat "Można pzesyłać jednynie pliki z rozszerzeniem .jpg i .gif", mimo że wgrywałem plik, który jest z rozszerzeniem .gif !

Co jest źle?

Ten post edytował sweter 25.01.2009, 22:03:52


--------------------
Go to the top of the page
+Quote Post
erix
post 25.01.2009, 22:23:44
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
$FILES

Oj, jak czytasz, to czytaj uważnie, bo nie ma takiej tablicy. winksmiley.jpg

Kurs PHP się kłania.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
jsmp
post 25.01.2009, 22:45:13
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 1
Dołączył: 25.01.2009

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


Cytat
if($HTTP_POST_FILES['zdjecie']['type'] != "image/gif" AND
$HTTP_POST_FILES['zdjecie']['type'] != "image/pjpeg" AND
$HTTP_POST_FILES['zdjecie']['type'] != "image/jpeg"){

A nie lepiej sprawdzać MIME ?


--------------------
WebSEM.pl - Jak promować stronę internetową? - marketing internetowy i nie tylko...
Go to the top of the page
+Quote Post
erix
post 26.01.2009, 15:59:55
Post #7





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Przecież to jest sprawdzanie MIME... Sęk w tym, że używa nie tej tablicy, co trzeba.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
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: 14.08.2025 - 05:19