Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]wysyłanie plików z formularza
Forum PHP.pl > Forum > Przedszkole
dudziec
Witam serdecznie,
mam taki problem otóz:
na serwerze posiadam dwa katalogi równorzedne w hierarchi:
- system ( tam znajdują sie pliki odpowiedzialne do administrowania syroną)
- news
w katalogu news mam podkatalogi: duzyimg

w katalogu system mam tam plik - formularz co przetwarza i wysyła mi plik który ma zapisac w katalogu news/duzyimg/:

  1.  
  2. //zapis
  3. if(is_uploaded_file($img_tmp)) {
  4. move_uploaded_file($img_tmp,'../news/duzyimg/'.$pic_name); //zapis zdjecia całego z nazwa
  5. chmod('../news/duzyimg/'.$pic_name,0755);
  6. }
  7. //koniec zapisu pliku


i tego nei robi i nie wiem co siedzieje twierdzi, ze scierzka jest zła - wiec jaka ma byc ?
chmody katalogów na 7777 - ustawione
dzięki z apomoc


zamper
  1. <form [...] enctype="multipart/form-data">
  2. <input type="hidden" name="MAX_FILE_SIZE" value="max_w_bajtach" /> <!-- nie zmieniaj wartości name -->
  3. <!-- ... -->


powinno pomóc smile.gif
dudziec
Zamper rozumiem, ze mam dopisac taką linijke do formularza? bo cały kod stronki jest nastepujący:

  1. <form class="form" action="dodajaktualnosc.php?akcja=dodaja" method="post">
  2. <input type="hidden" name="wyslane" value="TRUE" />
  3. <input type="hidden" name="MAX_FILE_SIZE" value="max_w_bajtach" />
  4.  
  5. <p>
  6. <div class="label"><label for="kategoria">Kategoria</label></div>
  7. <select name="kategoria">
  8. <option>region</option>
  9. <option>kultura</option>
  10. <option>sport</option>
  11. </select>
  12. </p>
  13.  
  14. <p>
  15. <div class="label"><label for="temat">Temat Wiadomości</label></div>
  16. <input type="text" name="temat" id="temat" size="100" />
  17. </p>
  18. <p>
  19. <div class="label"><label for="skrot">Skrót newsa</label></div>
  20.  
  21. <textarea name="skrot" cols="100" rows="10"></textarea/>
  22. </p>
  23.  
  24. <p>
  25. <div class="label"><label for="news">Cały news</label></div>
  26. <textarea name="news" cols="100" rows="10"></textarea/>
  27. </p>
  28.  
  29. <p>
  30. <div class="label"><label for="news">Obrazek</label></div>
  31. <input type="file" name="img" SIZE="100" CLASS="text">
  32. </p>
  33.  
  34. <p class="submit">
  35. <input type="submit" value="Dodaj Aktualność" />
  36. </p></form>
  37.  
  38. <?
  39. $akcja=$_GET["akcja"];
  40. if($akcja=='dodaja')
  41. {
  42. if ($_POST["wyslane"]=='TRUE') { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  43. $kategoria=$_POST["kategoria"];
  44. $temat=$_POST["temat"];
  45. $skrot=$_POST["skrot"];
  46. $news=$_POST["news"];
  47. $tabela='aktualnosciosk';
  48.  
  49. $img_tmp = $_FILES['img']['tmp_name']; //tymcz nazwa
  50. $img_name = $_FILES['img']['name']; // nazwa zdjecia
  51. $img_size = $_FILES['img']['size']; //rozmiar
  52. list($mt, $t) = explode(' ', microtime()); //niepowt nazw tworz foty
  53. $pic_name = $t.'_'.substr($mt, 2).'.jpg'; //nazwa foty do przetworzenia
  54.  
  55.  
  56. //zapis z tymczasowego zdjęcia
  57. if(is_uploaded_file($img_tmp)) {
  58. move_uploaded_file($img_tmp,'../news/duzyimg/'.$pic_name); //zapis zdjecia całego z nazwa
  59. chmod('../news/duzyimg/'.$pic_name,0755);
  60. }
  61. //koniec zapisu tymczasowego pliku
zamper
Popatrz. Wydaj mi się że najpierw zapisujesz do katalogu, a potem go tworzysz smile.gif
I koniecznie do znacznika <form> dopisz enctype="multipart/form-data", oznacza że obrazek przybędzie wraz z danymi z formularza -.-
dudziec
Cytat(zamper @ 13.12.2010, 15:20:16 ) *
Popatrz. Wydaj mi się że najpierw zapisujesz do katalogu, a potem go tworzysz smile.gif


zaraz nie rozumiem teraz ... jak najpierw zapisuje, a póxniej tworze?questionmark.gif?
zamper
  1. move_uploaded_file($img_tmp,'../news/duzyimg/'.$pic_name); //zapis zdjecia całego z nazwa
  2.  
  3. chmod('../news/duzyimg/'.$pic_name,0755);


no nie wiem niej jestem obeznany w tym temacie smile.gif

i przyda ci się jeszcze takie coś:

  1. if ($_FILES['obrazek']['error'] > 0)
  2. {
  3. echo 'problem: ';
  4. switch ($_FILES['obrazek']['error'])
  5. {
  6. // jest większy niż domyślny maksymalny rozmiar,
  7. // podany w pliku konfiguracyjnym
  8. case 1: {echo 'Rozmiar pliku jest zbyt duży.'; break;}
  9.  
  10. // jest większy niż wartość pola formularza
  11. // MAX_FILE_SIZE
  12. case 2: {echo 'Rozmiar pliku jest zbyt duży.'; break;}
  13.  
  14. // plik nie został wysłany w całości
  15. case 3: {echo 'Plik wysłany tylko częściowo.'; break;}
  16.  
  17. // plik nie został wysłany
  18. case 4: {echo 'Nie wysłano żadnego pliku.'; break;}
  19.  
  20. // pozostałe błędy
  21. default: {echo 'Wystąpił błąd podczas wysyłania.';
  22. break;}
  23. }
  24. return false;
  25. }


przeczytaj to: http://kursphp.com/wysylanie_obrazka.php
dudziec
A w moim przypadku co tam jest źle? i jaka ścierzka - jesli jest dobrze?questionmark.gif? bo chce wyeliminowac błąd zrozumiec dobrze i niepopełniac kolejnych podobnych błędów;)
zamper
Wydaje mi się, że błąd tkwi albo w znacznik <form> albo w wysłaniu pliku. Spróbuj dopisać kod pokazujący przyczynę błędu i to pozwoli Ci szybciej dojść do problemu. Zastosuj dwie rzeczy:
1) enctype="multipart/form-data"
2) kod pokazujący błędy
3) <input type="hidden" name="MAX_FILE_SIZE" value="maksymalny_rozmiar_obrazka_w_bajtach" />

Powodzenia, i jestem pewien że te trzy rzeczy pomogą, lecz to też może być coś z zabezpieczeniami serwera, ale wątpie smile.gif
dudziec
racja - zadziałało winksmiley.jpg
zamper
smile.gif i tak przy okazji Twój skrypt jest BARDZO słabo zabezpieczony. Musisz sprawdzać typ pliku smile.gif
dudziec
Oczywiście racja;) tylko po koleji robie by się nie pogubic;)
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.