Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mkdir i upload w jednym
Forum PHP.pl > Forum > PHP
integer000
Jeśli utworze na serwerze katalog i chce uploadwoać do niego jaliś plik to czyści się zmienna $c która zawiera ścieżkę gdzie ma się uploadować ten plik. W rezultacie Plik nie zapisuje się na serwerze... Więc mam pytanie jak utworzyć na serwerze katalog i uploadować do niego dowolny plik questionmark.gif


  1. <?php
  2.  
  3. if(!isset($_POST['s'])) {
  4. echo '<form method="post">'; 
  5. echo '<input type="text" name="namecatalog" size="30">';
  6. echo '<input type="submit" name="s" value="start">';
  7. echo '</form>';
  8. } else {
  9.  
  10. if (! empty ( $_POST['namecatalog'] ) )
  11. {
  12. $catalogname = $_POST['namecatalog'];
  13. $sciezka = 'htm/katalog/';
  14. $c = $sciezka.$catalogname;
  15. mkdir ($c);
  16. echo 'katalog: <b>';
  17. echo $c;
  18. echo'</b>'; 
  19.  
  20.  
  21. } else{
  22.  
  23.  echo'ereor catalog';
  24. }
  25.  }  
  26.  echo'<form enctype="multipart/form-data" method="POST">
  27.  Send this file: <input name="userfile" type="file" />
  28.  <input type="submit" value="Send File" />
  29.  </form>';
  30.  $uploaddir = $c.'/';
  31.  
  32. $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
  33. echo $uploadfile;
  34. move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile) ;  
  35.  
  36.  
  37. ?>
Pigula
musisz zmienic prawa dostepu po stworzeniu katalogu chmod.
integer000
prawa dostępu to tutaj nic nie mają do żeczy exclamation.gif

problem zaczyna się tutaj $uploaddir = $c.'/';
do zmiennej $uploaddir wrzuca się zawartość zmiennej $c plus / , tyle że w zmiennej $c nic niema bo gdzieś to po drodze umyka !
qbuz
Z tego co rozumiem, to nie rozumiesz, jak dzialaja wywolywane w przegladarce skrypty php ;]

Przeanalizuj dokladnie dzialanie tego kodu:
- gdy istnieje $_POST['s'] i podana jest nazwa katalogu, katalog jest tworzony
- nastepnie wyswietlany jest formularz dodawania pliku do katalogu
- po tym tworzony jest plik o nazwie, ktora NIE JEST nigdzie podana. Ta nazwa powinna byc podana dopiero PO WYSLANIU FORMULARZA przez uzytkownika.

Jesli wszystko tam w kodzie masz dobrze, to kod powinien wygladac np. tak:

  1. <?
  2.  
  3. if(!isset($_POST['s'])) {
  4. echo '<form method="post">'; 
  5. echo '<input type="text" name="namecatalog" size="30">';
  6. echo '<input type="submit" name="s" value="start">';
  7. echo '</form>';
  8. } 
  9. else {
  10. if (! empty ( $_POST['namecatalog'] ) ) {
  11. $catalogname = $_POST['namecatalog'];
  12. $sciezka = 'htm/katalog/';
  13. $c = $sciezka.$catalogname;
  14. mkdir ($c);
  15. echo 'katalog: <b>';
  16. echo $c;
  17. echo'</b>'; 
  18. } 
  19. else {
  20. echo'ereor catalog';
  21. }
  22. }
  23.  
  24. echo'<form enctype="multipart/form-data" method="POST">
  25. Send this file: <input name="userfile" type="file" />
  26. <input type="submit" value="Send File" />
  27. <input type="hidden" name="newcatalog" value="'.($c ? $c : '').'/" />
  28. </form>';
  29.  
  30. if ($_POST['newcatalog']) {
  31. $uploadfile = $_POST['newcatalog'] . basename($_FILES['userfile']['name']);
  32. echo $uploadfile;
  33. move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
  34. }
  35.  
  36. ?>


Chyba poprawnie napisalem, ale nie testowalem.

Skrypt dziala jednak dziwnie - mozna uploadowac 1 plik tylko po utworzeniu nowego katalogu (byc moze planujesz zmieniac, a to byl "1 etap" i napotkales ten blad ;])
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.