Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz chmody i exist dla katalogu
Forum PHP.pl > Forum > PHP
roghatt
Witam.
Mam formularz do ktorego user wpisuje dane i wgrywa plik.
Jedno pole w formularz oznaczone jest zmienna:
$skrot_nazwa

Dzieki temu tworzony jest katalog na ftpie w katalogu "wyslane" o nazwie "$skrot_nazwa".

Plik obslugujacy utworzenie katalogu, wyslanie pliku:
  1. <?php
  2. $tmp_name=$_FILES['plik']['tmp_name'];
  3. $name=$_FILES['plik']['name']; $size=$_FILES['plik']['size'];
  4. mkdir("wyslane/".$skrot_nazwa, 0775);
  5. $path_name="wyslane/".$skrot_nazwa."/".$name;
  6. if (file_exists($path_name)) {
  7.   $path_name="wyslane/".$skrot_nazwa."/2_".$name;
  8. }
  9. if (move_uploaded_file($tmp_name,$path_name))
  10. echo "\nWysłano plik: ".$name. ", o rozmiarze: ".$size." bajtów.";
  11. else "Plik nie został wysłany\n";
  12. chmod($path_name, 0775);
  13. ?>


utworzony jest katalog o nazwie "$skrot_nazwa i do niego wgrywany plik.
Problem pierwszy mam taki ze utworzony katalog na ftpie ma chmody 755 a nie 775.
Drugi problem to mam zrobiona petle ze jesli plik w katalogu istnieje to dopisane do niego bedzie na samym poczatku "2_"
A jak np ktos trzeci raz wrzuci plik? jak tu zrobic zeby dopisywalo kolejna liczbe jesli poprzednia juz istnieje?

I jeszcze jeden problem to jak sprawdzic czy katalog istnieje, bo jesli istnieje to do niego zeby wgralo pliki a jak nie istnieje to zeby go utworzylo mkdir. Probowalem to zrobic tez przez file_exists. Bo nie moglem znalezc funkcji ktora sprawdza katalogi czy istnieja

Pozdrawiam
jareeny
możesz sprawdzać czy katalog o danej nazwie istnieje funkcją is_dir()
michalkjp
Cytat(freelinkz @ 6.10.2008, 12:24:29 ) *
Problem pierwszy mam taki ze utworzony katalog na ftpie ma chmody 755 a nie 775.

Powodem jest pewnie umask 0022 ustawiony dla Twojego konta. Dlaczego to jest problemem? Chcesz, aby ktoś z grupy w systemie miał prawo zapisu, odczytu i wykonania tych plików?



Cytat(freelinkz @ 6.10.2008, 12:24:29 ) *
A jak np ktos trzeci raz wrzuci plik? jak tu zrobic zeby dopisywalo kolejna liczbe jesli poprzednia juz istnieje?


Prosty algorytm – masz plik o nazwie – nazwa_pliku_$licznik.dat:

  • przed zapisaniem pliku sprawdź czy plik o takiej nazwie istnieje
  • jeśli istnieje, to dodaj 1 do licznika i wróć do punktu 1, jeśli nie istnieje, to zapisz
roghatt
czyli to sie w petli zrobi?
bool is_dir(string nazwa) questionmark.gif

  1. <?php
  2. if ( bool is_dir ( string "wyslane/".$skrot_nazwa ))
  3. opendir('wyslane/".$skrot_nazwa');
  4. else
  5. mkdir("wyslane/".$skrot_nazwa, 0775);
  6. ?>


jesli podana nazwa jest katalogiem to zeby go otworzylo, w przeciwnym wypadku zeby go utworzylo
drPayton
Cytat(freelinkz @ 7.10.2008, 10:43:42 ) *
  1. <?php
  2. if ( bool is_dir (...)
  3. ?>

Nawyki z Javy? haha.gif
Cytat(freelinkz @ 7.10.2008, 10:43:42 ) *
jesli podana nazwa jest katalogiem to zeby go otworzylo, w przeciwnym wypadku zeby go utworzylo

Tak, tak to zadziała właśnie smile.gif


edit:
  1. <?php
  2. opendir('wyslane/'.$skrot_nazwa);
  3. ?>
roghatt
  1. <?php
  2. if ( bool is_dir (...)
  3. ?>


ja to wzialem z jakies strony o php smile.gif wiec .... jak to w php poprawnie bedzie wygladalo? chodzi mi o sama petle
  1. <?php
  2. if ( bool is_dir ( string "wyslane/".$skrot_nazwa ))
  3. opendir('wyslane/'.$skrot_nazwa);
  4. else
  5. mkdir("wyslane/".$skrot_nazwa, 0775);
  6. ?>
drPayton
http://pl2.php.net/language.types.type-juggling sekcja "Type Casting"
roghatt
no niestety nic mi to nie mowi :/

  1. <?php
  2. if ( bool is_dir ( string "wyslane/".$skrot_nazwa ))
  3. opendir('wyslane/'.$skrot_nazwa);
  4. else
  5. mkdir("wyslane/".$skrot_nazwa, 0775);
  6. ?>


ta petle przerobic i z tym bool cos nie tak jest? tak bylo na stronie z php. Czyli pod php jak to ma byc?
drPayton
  1. <?php
  2. if ( is_dir ( "wyslane/".$skrot_nazwa ))
  3. opendir('wyslane/'.$skrot_nazwa);
  4. else
  5. mkdir("wyslane/".$skrot_nazwa, 0775);
  6. ?>
roghatt
ok wszystko dziala ok...

mam dwa pola do zalaczania plikow:
  1. <?php
  2. $tmp_name=$_FILES['plik']['tmp_name'];
  3. $name=$_FILES['plik']['name']; $size=$_FILES['plik']['size'];
  4. if ( is_dir ( "wyslane/".$skrot_nazwa ))
  5. opendir('wyslane/'.$skrot_nazwa);
  6. else
  7. mkdir("wyslane/".$skrot_nazwa, 0775);
  8. $path_name="wyslane/".$skrot_nazwa."/loga_".$name;
  9. if (move_uploaded_file($tmp_name,$path_name))
  10. echo "\nWysłano plik: ".$name. ", o rozmiarze: ".$size." bajtów.";
  11. else "Plik nie został wysłany\n";
  12. chmod($path_name, 0775);
  13.  
  14. $tmp_name=$_FILES['plik2']['tmp_name'];
  15. $name=$_FILES['plik2']['name']; $size=$_FILES['plik2']['size'];
  16. if ( is_dir ( "wyslane/".$skrot_nazwa ))
  17. opendir('wyslane/'.$skrot_nazwa);
  18. else
  19. mkdir("wyslane/".$skrot_nazwa, 0775);
  20. $path_name="wyslane/".$skrot_nazwa."/loga_".$name;
  21. if (move_uploaded_file($tmp_name,$path_name))
  22. echo "\nWysłano plik: ".$name. ", o rozmiarze: ".$size." bajtów.";
  23. else "Plik nie został wysłany\n";
  24. chmod($path_name, 0775);
  25. ?>


ale jak ktos nie doda plikuw drugim polu to wyskakuje blad
Warning: chmod() [function.chmod]: No such file or directory in /home/numerystartowe/www/wyslij2.php on line 48

Czepia sie tego chmoda w drugim polu, ale jak go nei bedzie i jak ktos doda plik z drugiego pola to wtedy chmody pliku beda 600
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.