Uploader na stronie

Konfiguracja pozostałych skryptów.
Darecki
Posty: 2
Rejestracja: 01 lip 2011, 22:14:29
Strona na CBA.pl: http://gtabay.cba.pl/
Płeć: Niewybrana
User Agent: Firefox Windows 1920x1080

Uploader na stronie

Post autor: Darecki »

Witam!
Mam problem ze zrobieniem uploadu na swojej stronie internetowej. Bardzo możliwe że to przez mój całkowity brak wiedzy na temat php :)
Na internecie znalazłem taki skrypt:

Kod: Zaznacz cały

<form enctype="multipart/form-data" action="wyslij.php" method="post">
<input type="hidden" name="max_file_size" value="100000000000">
zaladuj ten plik
<input name="plikuzytkownika" type="file">
<input type="submit" value="wyslij">
</form>; 
I w pliku wyslij.php:

Kod: Zaznacz cały

if ($_FILES['plikuzytkownika']['error']>0)
   { echo 'problem:';
   switch ($_FILES['plikuzytkownika']['error'])
      {
      case 1: echo "rozmiar pliku";break;
      case 2: echo "rozmiar pliku";break;
      case 3: echo "plik wyslany czesciowo";break;
      case 4: echo "nie wyslano zadnego pliku";break;
      }
      exit;
   }

   $lokalizacja="katalog/".$_FILES['plikuzytkownika']['name'];
      if (is_uploaded_file($_FILES['plikuzytkownika']['tmp_name']))
      {
         if(!move_uploaded_file($_FILES['plikuzytkownika']['tmp_name'],$lokalizacja))
            {echo '<br>problem plik nie moze byc skopiowany';
            exit;}
      }
   else
   {echo '<br>blad podczas wysylania pliku: ';
   echo $_FILES['plikuzytkownika']['name'];
   }
   echo '<h2>plik wyslanny</h2>';
        
copy($plikuzytkowinka,$lokalizacja); 
na stronie pojawia się okno do wyboru pliku i wysłania, jednak po kliknięciu, zamiast wysyłać plik, odsyła do pliku wyslij.php żeby go zapisać na dysku... Gdzie jest jakiś błąd i co robię nie tak?
Z góry dzięki za pomoc :)
Galakar
Posty: 71
Rejestracja: 14 cze 2011, 10:06:37
Strona na CBA.pl: acf.cba.pl
Lokalizacja: Warszawa
Płeć: Mężczyzna
User Agent: Firefox Windows 1280x1024

Re: Uploader na stronie

Post autor: Galakar »

Musisz przechodzić na stronę wyślij.php gdyż ona jest odpowiedzialna za pobranie informacji i ich zapis. Sprawdź czy nie masz tego zapisanego na serwerze ftp.


Jeśli nic tam nie ma, to może spróbuj na końcu dodać (zamiast opcji copy) to:
[code]
        $wp = fopen($lokalizacja, 'r');
    $zawartosc = fread ($wp, filesize ($lokalizacja));
    fclose ($wp);
    $zawartosc = strip_tags($zawartosc);
    $wp = fopen($lokalizacja, 'w');
    fwrite($wp, $zawartosc);
    fclose($wp);
 [/code]
Niedawno robiłem coś podobnego, ale ja ograniczyłem się tylko do wysyłania plików tekstowych. Więc nie jestem w 100% pewny czy w każdym wypadku to tak zadziała.
Darecki
Posty: 2
Rejestracja: 01 lip 2011, 22:14:29
Strona na CBA.pl: http://gtabay.cba.pl/
Płeć: Niewybrana
User Agent: Firefox Windows 1920x1080

Re: Uploader na stronie

Post autor: Darecki »

Dzięki, teraz wydaje się, że działa wszystko w porządku. Ale.. Mimo, że pisze "plik wysłany", to w folderze nie ma przesłanego pliku.. a chmod ustawiłem na 777 :?
Galakar
Posty: 71
Rejestracja: 14 cze 2011, 10:06:37
Strona na CBA.pl: acf.cba.pl
Lokalizacja: Warszawa
Płeć: Mężczyzna
User Agent: Firefox Windows 1280x1024

Re: Uploader na stronie

Post autor: Galakar »

W pierwszym pliku zlikwiduj ";" po </form>. Jeśli chodzi o dalszą część wszystko powinno działać. Jeśli nie widać zmian, wyloguj się z serwera ftp i połącz ponownie. Powinno być widać. Poniżej przepisałem Twój kod tak aby był trochę bardziej czytelny:

Kod: Zaznacz cały

        if ($_FILES['plikuzytkownika']['error'] >0)
    {
     echo 'Problem: ';
     switch ($_FILES['plikuzytkownika']['error'])
     {
      case 1: echo 'Rozmiar pliku przekroczyl wartosc upload_max_filesize'; break;
      case 2: echo 'Rozmiar pliku przekroczyl wartosc max_file_size'; break;
      case 3: echo 'Plik wyslany tylko czesciowo'; break;
      case 4: echo 'Nie wyslano zadnego pliku'; break;
     }
     exit;
    }
// umieszczenie pliku w pożądanej lokalizacji
    $lokalizacja = 'katalog/'.$_FILES['plikuzytkownika']['name'];
    if (is_uploaded_file($_FILES['plikuzytkownika']['tmp_name']))
    {
     if (!move_uploaded_file($_FILES['plikuzytkownika']['tmp_name'], $lokalizacja))
     {
      echo 'Problem: Plik nie moze byc skopiowany do katalogu';
      exit;
     }
    }
    else
    {
     echo 'Problem: mozliwy atak podczas wysylania pliku. Nazwa pliku:';
     echo $_FILES['plikuzytkownika']['name'];
     exit;
    }
    echo 'Plik wyslany<br><br>';

// ponowne sformatowanie zawatości pliku
    $wp = fopen($lokalizacja, 'r');
    $zawartosc = fread ($wp, filesize ($lokalizacja));
    fclose ($wp);
    $zawartosc = strip_tags($zawartosc);
    $wp = fopen($lokalizacja, 'w');
    fwrite($wp, $zawartosc);
    fclose($wp);
 
---Edit---
Tak aby zgadzały się prawa autorskie. Skrypt jest lekko zmodyfikowaną wersją tego co zostało umieszczone w książce: Welling Luke, Thomson Laura, PHP i MySQL. Tworzenie stron WWW, Gliwice 2005.
ODPOWIEDZ