Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: upload plikow + twoerzenie nowego folderu
Forum PHP.pl > Forum > PHP
Matiash
Mam oto taki ładny kod php ktory po uploadzie danego pliku tworzy plik txt na serwerze o takiej samej nazwie jak zuploadowany plik i zapisuje w nim opis.

Oto jest ten kod ( dziala bez zarzutu ) biggrin.gif
  1. <?php
  2. if ($_POST['wgraj']){
  3. $katalog = 'upload/';
  4. if (!ereg('.php',$_FILES['plik']['name'])){
  5. if(move_uploaded_file($_FILES['plik']['tmp_name'],
  6. $katalog.$_FILES['plik']['name'])) {
  7. $plik=fopen($katalog.$_FILES['plik']['name'].".txt","w+");
  8. fputs($plik,"Email od autora:".chr(10).$_POST['email'].chr(10).chr(10)."Treść wiadomości:".chr(10).$_POST['tresc'].chr(10).chr(10)."Dodano: ".chr(10).date("d F Y, H:i"));
  9. fclose($plik);
  10. echo 'Plik został przesłany, dziękujemy';
  11. } else {
  12.  echo 'Wystapił błąd!';
  13. }
  14. } else print "php nie można wygrywać";
  15. } else {
  16. ?>
  17. <form action="" method="post" enctype="multipart/form-data">
  18. Email <input type="text" name="email" value=""><br>
  19. Treść <textarea cols=30 rows=10 name=tresc></textarea><br>
  20. <input type=file name=plik><br>
  21. <input type="submit" name="wgraj" value="Wgraj"></form>
  22. <? }


Mam jednak prosbe i jednoczesnie kilka pytan.

1. Czy mozliwe jest do zrobienia cos takiego ze na serwerze tworzy sie automatycznie nowy folder ( np. wdlug daty ) i w nim zostana zapisane zalacznik i ten nowo utworzony plik tekstowy?

2. Chcialbym aby byla mozliwosc uplodowania wiecej niz 1 pliku np. 10 plikow i zeby uplod nie byl obowiazkowy, a plik opis byl nie nazywal sie tak jak zauplodowany plik tylko mial swoja unikalna nazwe np. "opis".


To wszystko dziekuje za odpowiedzi Wink


Skrypt ktory aktualnie mam wgrany wyglada tak :

http://www.traveling.yoyo.pl/proba2.php




Skrypt probowalem przerobic na cos takiego:

  1. <?php
  2. if ($_POST['wgraj']){
  3. $katalog = 'mkdir(date(dmyHis),0777)/';
  4. if (!ereg('.php',$_FILES['plik']['name'])){
  5. if(move_uploaded_file($_FILES['plik']['tmp_name'],
  6. $katalog.$_FILES['plik']['name'])) {
  7. $plik=fopen($katalog.$_FILES['plik']['name'].".txt","w+");
  8. fputs($plik,"Email od autora:".chr(10).$_POST['email'].chr(10).chr(10)."Treść wiadomości:".chr(10).$_POST['tresc'].chr(10).chr(10)."Dodano: ".chr(10).date("d F Y, H:i"));
  9. fclose($plik);
  10. echo 'Plik został przesłany, dziękujemy';
  11. } else {
  12.  echo 'Wystapił błąd!';
  13. }
  14. } else print "php nie można wygrywać";
  15. } else {
  16. ?>
  17. <form action="" method="post" enctype="multipart/form-data">
  18. Email <input type="text" name="email" value=""><br>
  19. Treść <textarea cols=30 rows=10 name=tresc></textarea><br>
  20. <input type=file name=plik><br>
  21. <input type="submit" name="wgraj" value="Wgraj"></form>
  22. <? }


ale wywala taki blad

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access mkdir(date(dmyHis),0777)/header.jpg in /home/s/k/y/skylark/www/proba2.php on line 6
Wystapił błšd!
kamilk007
Wydaje mi sie ze to dodawanie kilku plikow musisz zrobic z petli warunkowej if, przy kazdym nastepnym polu w ktorym mozna podac plik zrob taki "pierdolnik" do zaznaczania nie pamietam jak to sie nazywa:P jezeli bedzie zaznaczony dalej wykonuje kolejne linie kodu w ktorym powtarzasz to co juz masz a jak odznaczony (lub na odwrot:P) konczy swoje dzialanie tongue.gif guitar.gif
Matiash
dobra dzieki kamilk007, teraz sie mecze z tym tworzeniem folderu wedlug daty , tzn zeby pliki byly zapisywane w tych nowoutworzonych folderach( wedlug daty ). Wywala taki blad jak napisalem post wyzej, mecze sie juz z tym drugi dzien :/
kamilk007
Z tym niestety nie jestem w stanie Ci pomoc nigdy nie mialem do czynienia nawet z uploadowniem plikow przez php a to co napisalem to na logike:P Pozdrawiam
devnul
Cytat(kamilk007)
Wydaje mi sie ze to dodawanie kilku plikow musisz zrobic z petli warunkowej if
nie ma czegoś takiego jak pętla warunkowa IF


  1. <?php
  2. $date=date('dmyHis');
  3. mkdir($date,0777);
  4. ?>

nie wiem jak Ty chciales utworzyć katalog skoro funkcje jako string podałeś
Matiash
a jak zrobic zeby w tym utworzonym katalogu zapisywalo mi te pliki ? bo wlasnie nie z tworzeniem folderu mam problem ? czy jesli zmienna $katalog jest moja sciezka w ktrej maja byc zapisywane pliki to jak tam wstawic sciezke do tego nowoutworzonego folderu ?
devnul
  1. <?php
  2. $katalog=."/pliki/".date('dmyHis')."/";
  3. mkdir($katalog,0777);
  4. move_uploaded_file($_FILES['plik']['tmp_name'],$katalog.$_FILES['plik']['name']));
  5. ?>
Matiash
mam tak jak napisales:

  1. <?php
  2. if ($_POST['wgraj']){
  3. $katalog=."/pliki/".date('dmyHis')."/";
  4. mkdir($katalog,0777);
  5. if (!ereg('.php',$_FILES['plik']['name'])){
  6. if(move_uploaded_file($_FILES['plik']['tmp_name'],
  7. $katalog.$_FILES['plik']['name'])) {
  8. $plik=fopen($katalog.$_FILES['plik']['name'].".txt","w+");
  9. fputs($plik,"Email od autora:".chr(10).$_POST['email'].chr(10).chr(10)."Treść wiadomości:".chr(10).$_POST['tresc'].chr(10).chr(10)."Dodano: ".chr(10).date("d F Y, H:i"));
  10. fclose($plik);
  11. echo 'Plik został przesłany, dziękujemy';
  12. } else {
  13.  echo 'Wystapił błąd!';
  14. }
  15. } else print "php nie można wygrywać";
  16. } else {
  17. ?>
  18. <form action="" method="post" enctype="multipart/form-data">
  19. Email <input type="text" name="email" value=""><br>
  20. Treść <textarea cols=30 rows=10 name=tresc></textarea><br>
  21. <input type=file name=plik><br>
  22. <input type="submit" name="wgraj" value="Wgraj"></form>
  23. <? }



Wywala blad na 3 linijce

Parse error: syntax error, unexpected '.' in /home/s/k/y/skylark/www/proba2.php on line 3

Mimo wszystko dzieki winksmiley.jpg
devnul
jest tak:
  1. <?php
  2. $katalog=."/pliki/".date('dmyHis')."/";
  3. ?>


a powinno być tak
  1. <?php
  2. $katalog="/pliki/".date('dmyHis')."/";
  3. ?>


kropka się wkradła
Matiash
hmmm, bez kropki nie wywala bledu ale jak klikne wyslij to sie pojawia:

Warning: mkdir() [function.mkdir]: Unable to access /pliki/110407163904/ in /home/s/k/y/skylark/www/proba2.php on line 4

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to access /pliki/110407163904/image.jpg in /home/s/k/y/skylark/www/proba2.php on line 7


Dla pewnosci utworzylem folder pliki ale wciaz jest to samo.
devnul
  1. <?php
  2. $katalog="./pliki/".date('dmyHis')."/";
  3. ?>

teraz spróbuj

działo się tak bo to był PRZYKŁAD a skrypt chciał utworzyć katalog w katalogu głównym /pliki/ a nie w bierzącym

pozatym skrypt pliki powinien mieć odpowiednio ustawione uprawnienia
Matiash
devnul , udalo sie exclamation.gif jestes wielki, DZIEKUJE BARDZO exclamation.gif biggrin.gif

No wiec mam jeszcze jeden problem. Mam taki skrypt:

  1. <?php
  2. if ($_POST['wgraj']){
  3. $katalog="./pliki/".date('dmyHis')."/";
  4. mkdir($katalog,0777);
  5. $plik=fopen($katalog."opis.txt","w+");
  6. fputs($plik,"Email od autora:".chr(10).$_POST['email'].chr(10).chr(10)."Treść wiadomości:".chr(10).$_POST['tresc'].chr(10).chr(10)."Dodano: ".chr(10).date("d F Y, H:i"));
  7. fclose($plik);
  8.  if (!ereg('.php',$_FILES['plik']['name'])){
  9. if(move_uploaded_file($_FILES['plik']['tmp_name'],
  10. $katalog.$_FILES['plik']['name'])) {
  11.  
  12. echo 'Dziękujęmy za przesłanie relacji';
  13. } else {
  14.  echo 'Dziękujemy za przesłanie relacji';
  15. }
  16. } else print "Dziękujemy za przesłanie relacji";
  17. } else {
  18. ?>
  19. <form action="" method="post" enctype="multipart/form-data">
  20. Email <input type="text" name="email" value=""><br>
  21. Treść <textarea cols=30 rows=10 name=tresc></textarea><br>
  22. <input type=file name=plik><br>
  23. <input type=file name=plik1><br>
  24. <input type="submit" name="wgraj" value="Wgraj"></form>
  25. <? }



Dodałem jedno pole input, ale nie wiem co zmienc w php zeby mi wgrywalo na serwer plik z tego drugiego ( pogrubionego ) inputa ? ( Domyslnie chcialbym miec mozliwosc wgrywania 10 plikow )

Ponadto co powiecie o bezpieczenstwie tego skrpytu ?
devnul
był ostatnio temat na forum o wrzucaniu kilku plików - poszukaj podpowiem że name inputa powinno być np takie plik[] - wtenczas masz możliwość wgrania teorytycznie nieograniczonej ilości plików
Matiash
rozumiem ze powienienm uzyc petli ? np. for, tylko ze za bardzo sie na tym nie znam jak uzywac petli, jest moze jakis kurs albo cos ?
devnul
szukać się nie chce?
ehh
http://forum.php.pl/index.php?showtopic=65938
Matiash
devnul zrobilem cos takiego:

  1. <?php
  2. if ($_POST['wgraj']){
  3. $katalog="./pliki/".date('dmyHis')."/";
  4. mkdir($katalog,0777);
  5. $plik=fopen($katalog."opis.txt","w+");
  6. fputs($plik,"Email od autora:".chr(10).$_POST['email'].chr(10).chr(10)."Treść wiadomości:".chr(10).$_POST['tresc'].chr(10).chr(10)."Dodano: ".chr(10).date("d F Y, H:i"));
  7. fclose($plik);
  8.  if (!ereg('.php',$_FILES['plik']['name'])){
  9. if(move_uploaded_file($_FILES['plik']['tmp_name'],
  10. $katalog.$_FILES['plik']['name'])) {
  11.  
  12. echo 'Dziękujęmy za przesłanie relacji';
  13. } else {
  14.  echo 'Dziękujemy za przesłanie relacji';
  15. }
  16. } else print "Dziękujemy za przesłanie relacji";
  17. } else {
  18. ?>
  19. <html>
  20. <head>
  21. <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  22. <meta name="generator" content="PSPad editor, www.pspad.com">
  23. <script type="text/javascript">
  24. <!--
  25. function dodaj_element(kontener){
  26. var znacznik = document.createElement('input');
  27. znacznik.setAttribute('type', 'file');
  28. znacznik.setAttribute('name', 'plik[]');
  29. znacznik.className = 'upload';
  30. var kontener = document.getElementById(kontener);
  31. kontener.appendChild(znacznik);
  32. }
  33. //-->
  34. </script>
  35. <style type="text/css">
  36. <!--
  37. input.upload { display: block; }
  38. -->
  39. </style>
  40. <title></title>
  41. </head>
  42. <body>
  43. <form action="" method="post" enctype="multipart/form-data">
  44. <div id="pliki">
  45. Email <input type="text" name="email" value=""><br>
  46. Treść <textarea cols=30 rows=10 name=tresc></textarea><br>
  47. <input type="file" name="plik[]" class="upload" />
  48. </div>
  49. <div>
  50. <input type="button" value="Załącz kolejny plik" onclick="dodaj_element('pliki');"/>
  51. <input type="submit" name="wgraj" value="Wgraj"></form>
  52. </div>
  53. </form>
  54. </body>
  55. </html>
  56. <? }


Niestety nie wgrywa zadnego pliku, gdy usune " []" wgrywa ale tylko jeden plik, gdy dopisze "[]" do php to tez nie wgrywa niczego...
devnul
ja ***** chłopie:
  1. <?php
  2. move_uploaded_file($_FILES['plik']['tmp_name'],
  3. $katalog.$_FILES['plik']['name']))
  4. ?>
co to jest?
rusz troche mózgownicą w tamtym poście masz dokładnie rozwiązanie i zobacz co robisz źle - nikt za Ciebie myślał nie będzie! Przekazujesz tablice a odwołujesz się do czego?
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.