Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: upload plików
Forum PHP.pl > Forum > PHP
mlynar
Mam problem z uploadem plików. Skrypt odpowiedzialny za upload to:
Kod
<?php
     if (is_uploaded_file( $_FILES['userfile']['tmp_name']))
        {
        $strUploadDir='http://www.domena.pl/pliki/'.$_FILES['userfile']['name'];
        if (move_upload_file( $_FILES['userfile']['tmp_name'], $strUploadDir ))
           {
           echo 'Plik został pomy&para;lniej uploadowany';
           }
        else
           {
           echo 'Upload plików nie powiódł się.';
           }
        }
     else
         {
         echo 'Plik nie został wysłany na serwer';
         }
?>

Skrypt nie wyswietla zupełnie nic sad.gif sprawdzilem ustawienia serwera i jest ok. ustawilem chmod katalogu na 777. probowalem tez ze sciezką '/pliki/. nie mam juz pomysłu wiec zwracam sie o pomoc?
cadavre
A przypadkiem w formie masz mimetype?
miggie
Heya
Cytat
$strUploadDir='http://www.domena.pl/pliki/'.$_FILES['userfile']['name'];

nie wiem, czy używanie nazwy katalogu z "http:" i domeną jest tutaj uzasadnione.
Właśnie dzisiaj się bawiłem z uploadem plików. Jako katalog główny przyjąłem katalog, z którego został uruchomiony skrypt.
Ścieżka do pliku wygląda u mnie następująco: 'UploadDir/foo.php'
Nie jestem pewien, czy się sprawdzi w każdej sytuacji, ale u mnie działa.

Powodzenia.
mlynar
Nie mam określonego typu przesyłanych plikow. formularz wyglada tak:
Kod
<form action="wyslij.php" method="post" enctype="multipart/form-data">
<input name="MAX_FILE_SIZE" value="1000000" type="hidden">
Załaduj ten plik: <input type="file" name="userfile">
<input type="submit" value="Wyślij plik">
</form>



a sciezke tez probowalem ustawic na
Kod
$strUploadDir='pliki/'.$_FILES['userfile']['name'];

a takze

$strUploadDir='/pliki/'.$_FILES['userfile']['name'];

niestety nie przynioslo rezultatow
miggie
może to Ci pomoże...
U mnie działa:

kod z pliku 'wyslij.php'
  1. <?php
  2.  
  3. $currFileName = $_SERVER['PHP_SELF']; //wskazuje na plik, z ktorego zostala wywolana
  4. $dirName = 'images/'; //katalog docelowy
  5. include ('FileUpload.php'); //zaladowanie pliku z klasa 
  6. $a = new FileUpload; //utworzenie obiektu
  7. if(!isset($_FILES['plik'])){ //czy zostal przeslany plik?
  8. echo $a->DrawForm($currFileName).'<br>'; //jesli nie, to pokaz formularz
  9. } else {
  10. echo $a->MoveFile($dirName).'<br>'; //jesli tak, to skopiuj plik z temp do kat. docelowego
  11. }
  12. echo "<h3><a href='$currFileName'>Powrót</a></h3>"; //powrot do strony wysylania
  13.  
  14. ?>


dalej kod pliku FileUpload.php
  1. <?php
  2.  
  3. class FileUpload
  4. /*
  5. Klasa do wysyłania plików na serwer BY MIGUR
  6. 1. trzeba ją 'zainkludować'
  7. 2. metody: 
  8. a. DrewForm($filename)
  9. gdzie $filename - nazwa pliku, który ma się otworzyć po wysłaniu pliku z formularza
  10. Metoda rysuje formularz (dokładnie zwraca tekst zawierający kod formularza)
  11. b. MoveFile($uploaddir)
  12. gdzie $uploaddir - nazwa katalogu, do którego ma się zapisać plik
  13. Metoda zwraca tekst informujący o sukcesie lub o błędzie.
  14. */
  15. {
  16.  
  17. function FileUpload()
  18. {
  19. }
  20.  
  21. function DrawForm($filename) //wygeneruj formularz
  22. {
  23. $txt = '
  24. <form name="Wyslij"
  25. enctype = "multipart/form-data"
  26. action = "'.$filename.'"
  27. method = "POST">
  28. <input type="hidden" name="MAX_FILE_SIZE" value="2000000">
  29. <table>
  30. <tr>
  31. <td>Nazwa pliku:</td>
  32. <td>
  33. <input type = "file"
  34. name = "plik"
  35. size = "60">
  36. </td>
  37. <td>
  38. <input type = "submit"
  39. name = "wyslij"
  40. value = "Wyślij plik">
  41. </td>
  42. </tr>
  43. </table>
  44. ';
  45. return $txt;
  46. }
  47.  
  48. function MoveFile($uploaddir) //skopiuj plik z tmp do katalogu $uploaddir
  49. {
  50. $destination = $uploaddir.$_FILES['plik']['name'];
  51. echo 'Wczytuje plik do: <b>'.$destination.'</b><br>';
  52. if(move_uploaded_file($_FILES['plik']['tmp_name'],$destination)) 
  53. {
  54. $txt = 'Plik został pomyślnie wczytany'; //Przesylanie OK
  55. } else {
  56. $PlikError = $_FILES['plik']['error']; //Blad
  57. switch ($PlikError)
  58. {
  59. case 1: $errtxt = 'Zbyt duży rozmiar pliku'; break;
  60. case 2: $errtxt = 'Zbyt duży rozmiar pliku'; break;
  61. case 3: $errtxt = 'Plik wysłany tylko częściowo'; break;
  62. case 4: $errtxt = 'Nie wysłano żadnego pliku'; break;
  63. }
  64. $txt = '<span style="color: red"><strong>Błąd wczytywania pliku: </strong>$errtxt </span> ';
  65. }
  66. return $txt;
  67. }
  68. }
  69. ?>


Może nie jest to odkrywcze, ale u mnie działa. I lokalnie i na serwerze.

Powodzenia.
mlynar
Dzieki! twoj skrypt dziala. i chyba juz sie nie dowiem co bylo zle w tamtym;)
miggie
Cieszę się biggrin.gif
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.