Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz nie wysyła nazwy pliku
Forum PHP.pl > Forum > PHP
jnazd
Witam i proszę o pomoc.

Napisałem stronkę www zawierającą formularz, w którym jest pole typu file. Po wysłaniu tego formularza do skryptu php okazuje się, że na jednym serwerze nazwa pliku jest przekazywana poprawnie a na innym serwerze nie przesyła nazwy pliku. Co trzeba zrobić?


<body>
<form method="post" action="upload.php" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="30000">

Wybierz plik który chcesz umieścić na serwerze:<br>

<input type="file" name="pliczek" size="40"><br>
<input type="submit" value="Wgraj plik">
</form>

upload.php

<?
move_uploaded_file($_FILES['pliczek']['tmp_name'],"pliki/".$_FILES['pliczek']['name']);
?>

Pozdrawiam
kossa
Sprawdź prawa zapisu do katalogu w któym zapisujesz pliku, muszą być ustawione na 777.

Tam gdzie masz realizację uploadu:

  1. <?php
  2. print_r($_FILES);//wstaw aby zobaczyc co jest slane
  3.  
  4. $uploadfile = "pliki/".basename($_FILES['pliczek']['name']);
  5. if (move_uploaded_file($_FILES['pliczek']['tmp_name'], $uploadfile))
  6. //ok
  7. else
  8. //blad
  9. ?>


Tak na szybko z ręki...

Łukasz
gregi1
Ale co znaczy nie przesyla nazwy pliku, tzn wogole nie przesyla Ci pliku?questionmark.gif?

Mialem ostatnio ten sam problem i to jest wlasnie problem z prawami do katalogu. Sprawdz jeszcze czy masz utworzony katalog do ktorego chcesz zapisac czyli pliki.
jnazd
Uruchomiłem funkcję phpinfo() i okazało się, że file_upload=Off. Zastanawiam się czy czasem ta zmienna nie odpowiada za to.
grzemach
Witam,
tak to moze być to. Sprawdz również czy tmp_dir lub cos podobnego, jest ustawione na /tmp/ lub inny katalog z prawami do zapisu przez kazdego (tutaj trafi plik w pierwszej kolejnosci, dopiero pozniej mozesz go gdzies przeniesc)
Koniczynka
Witajcie,

Mam problem podobnej natury. Też nie dodaje mi pliku, ale tylko pod Internet Explorerem. Pod Mozillą i Operą skrypt działa bez zarzutów. Podobnie inny skrypt - do dodawania newsów; kiedy nie dołączam zdjęcia, pod IE wszystko zapisuje się w bazie. A kiedy chcę dodać fotkę, to nic się nie wykonuje - ani MySQL, ani upload. Czym to może być spowodowane? Z góry dziękuję za wszelkie sugestie.

  1. class formularz
  2. {
  3. private $galeria;
  4. private $zdjecie;
  5. private $rozszerzenie;
  6. private $nazwafotki;
  7. private $opis;
  8. private $autor;
  9. private $submit;
  10. private $submit2;
  11. private $data;
  12. public $nazwapodf;
  13. private $mime;
  14.  
  15. private $nazwakat;
  16. private $idkat;
  17.  
  18. function __construct()
  19. {
  20. $this ->rozszerzenie = $_FILES['plik']['tmp_name'];
  21. $this ->zdjecie = $_FILES['plik']['name'];
  22. $this ->mime = $_FILES['plik']['type'];
  23. $this ->galeria = $_POST['galeria'];
  24. $this->submit = $_POST['submit'];
  25. $this->submit2 = $_POST['submit2'];
  26. $this->opis = $_POST['opis'];
  27. $this->autor = $_POST['autor'];
  28. $this->data = date("Y-m-d");
  29. $zastap = array("ą" , "Ą" , "ć" , "Ć" , "ę" , "Ę" , "ł" , "Ł" , "ń" , "Ń" , "ó" , "Ó" , "ś" , "Ś" , "ż" , "Ż" , "ź" , "Ź" ," ");
  30. $zastap2 = array("a" , "a" , "c" , "c" , "e" , "e" , "l" , "l" , "n" , "n" , "o" , "o" , "s" , "s" , "z", "z", "z", "z", "_");
  31. $nazwafotki2 = strtolower("min_$this->zdjecie");
  32. $this->nazwafotki = str_replace($zastap, $zastap2, $nazwafotki2);
  33.  
  34. }
  35.  
  36. private function robMysql()
  37. {
  38. mysql_query("INSERT INTO zdjecia (nazwa_zdjecia , opis_zdjecia , data_zdjecia , galeria_zdjecia , autor_zdjec
    ia)
  39. VALUES ('$this->nazwafotki' , '$this->opis' , '$this->data' , '$this->galeria' , '$this->autor') "); 
  40. }
  41.  
  42. private function zmiennazwe()
  43. {
  44. $zastap = array("ą" , "Ą" , "ć" , "Ć" , "ę" , "Ę" , "ł" , "Ł" , "ń" , "Ń" , "ó" , "Ó" , "ś" , "Ś" , "ż" , "Ż" , "ź" , "Ź" ," ");
  45. $zastap2 = array("a" , "a" , "c" , "c" , "e" , "e" , "l" , "l" , "n" , "n" , "o" , "o" , "s" , "s" , "z", "z", "z", "z", "_");
  46. $nazwafotki2 = strtolower("min_$this->zdjecie");
  47. $this->nazwafotki = str_replace($zastap, $zastap2, $nazwafotki2);
  48. }
  49.  
  50. private function robkatalog()
  51. {
  52. $zastapa = array("ą" , "Ą" , "ć" , "Ć" , "ę" , "Ę" , "ł" , "Ł" , "ń" , "Ń" , "ó" , "Ó" , "ś" , "Ś" , "ż" , "Ż" , "ź" , "Ź" ," ");
  53. $zastapa2 = array("a" , "a" , "c" , "c" , "e" , "e" , "l" , "l" , "n" , "n" , "o" , "o" , "s" , "s" , "z", "z", "z", "z", "_");
  54. $nazwapodf2 = strtolower($this->galeria);
  55. $this->nazwapodf = str_replace($zastapa, $zastapa2, $nazwapodf2);
  56. }
  57.  
  58. private function katalogowanie()
  59. {
  60. $this->robkatalog();
  61. $this->katalog = "galerie/$this->nazwapodf";
  62. if(!is_dir($this->katalog))
  63. {
  64. mkdir($this->katalog, 0777);
  65. chmod($this->katalog, 0777);
  66. }
  67. chdir($this->katalog);
  68.  
  69. }
  70.  
  71.  
  72. public function upjpg()
  73. {
  74.  
  75. $this->zmiennazwe();
  76. $this->katalogowanie();
  77. move_uploaded_file("$this->rozszerzenie", "$this->zdjecie");
  78. $img = imagecreatefromjpeg("$this->zdjecie");
  79. $width = imagesx($img);
  80. $height = imagesy($img);
  81. if ($width > 700 || $height > 700)
  82. {
  83. $height_mini = 100;
  84. $width_mini = 270;
  85. }
  86. elseif ($width < 700 && $height < 700)
  87. {
  88. $height_mini = $height/2;
  89. $width_mini = $width/2;
  90. }
  91. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  92.  
  93. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);  
  94.  
  95.  
  96. imagejpeg($img_mini, "$this->nazwafotki", 80);
  97. imagedestroy($img);
  98. imagedestroy($img_mini);
  99.  
  100. unlink("$this->zdjecie");
  101.  
  102. echo "<span>Udało Ci się wgrać $this->nazwafotki</span>";
  103.  
  104. public function upgif()
  105. {
  106. $this->zmiennazwe();
  107. $this->katalogowanie();
  108. move_uploaded_file("$this->rozszerzenie", "$this->zdjecie");
  109. $img = imagecreatefromgif("$this->zdjecie");
  110. $width = imagesx($img);
  111. $height = imagesy($img);
  112. if ($width > 700 || $height > 700)
  113. {
  114. $height_mini = 350;
  115. $width_mini = 350;
  116. }
  117. elseif ($width < 700 && $height < 700)
  118. {
  119. $height_mini = $height/2;
  120. $width_mini = $width/2;
  121. }
  122. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  123. $tlo=ImageColorAllocate($img_mini,255 ,255 ,255);
  124.  
  125. ImageFill($img_mini, 0, 0, $tlo) ;
  126. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);  
  127.  
  128.  
  129. imagegif($img_mini, "$this->nazwafotki", 80);
  130. imagedestroy($img);
  131. imagedestroy($img_mini);
  132.  
  133. unlink("$this->zdjecie");
  134.  
  135. echo "<span>Udało Ci się wgrać $this->nazwafotki</span>";
  136.  
  137. }
  138.  
  139. public function pokazf()
  140. {
  141. ?>
  142.  
  143.  
  144. <div id="zawartosc">
  145. <div class="contenu">
  146. <span><h2>dodaj zdjęcie</h2></span>
  147. <form method="post" enctype="multipart/form-data" name="inputform">
  148. <span>Dodaj zdjęcie</span>
  149. <span><input name="plik" type="file" class="wgranie" /></span>
  150. <span>Opis zdjęcia</span>
  151. <span><textarea name="opis" rows="10" cols="40"></textarea></span>
  152. <span>Autor zdjęcia</span>
  153. <span><input type="text" name="autor" /></span>
  154. <span>Nazwa galerii</span>
  155. <span><select name="galeria">
  156. <?php $this->wyborgalerii(); ?>
  157. </select>
  158. </span>
  159.  
  160. <span><input type="submit" name="submit" value="dodaj"> <input type="submit" name="submit2" value="cofnij"></span>
  161. </form>
  162.  </div>
  163.  
  164. </div>
  165. <?php
  166. $this->robupdate();
  167. }
  168.  
  169. private function wyborgalerii()
  170. {
  171. $this->polka = mysql_query("SELECT * FROM galeria ORDER BY nazwa_galeria ");
  172. while($this->wiersz = mysql_fetch_array($this->polka))
  173. {
  174. $this->nazwakat = $this->wiersz['nazwa_galeria'];
  175. $this->idkat = $this->wiersz['id_galeria'];
  176. ?>
  177. <option value="<?php echo $this->idkat;?>"><?php echo $this->nazwakat;?></option>
  178. <?php
  179. }
  180.  
  181. }
  182.  
  183. private function robupdate()
  184. {
  185. if ($this->submit && $this->zdjecie != '')
  186. {
  187. switch($this->mime)
  188. {
  189. case 'image/gif':
  190. $this->robMysql();
  191. $this->upgif();
  192. echo "<span>Udało Ci się dodać nowe zdjęcie</span>";
  193. break;
  194. case 'image/jpeg':
  195. $this->robMysql();
  196. $this->upjpg();
  197. echo "<span>Udało Ci się dodać nowe zdjęcie</span>";
  198. break;
  199. }
  200. }
  201. elseif ($this->submit && $this->zdjecie == '')
  202. {
  203. echo "<span>Musisz wgrać zdjęcie</span>";
  204. }
  205. elseif ($this->submit2)
  206. {
  207. header("Location: zarzadzajfot.php");
  208. }
  209. }
  210.  
  211.  
  212. }//koniec klasy
  213.  
  214. $nowka = new formularz;
  215. $nowka ->pokazf();
mild
Linia 195: case 'image/jpeg'
Z tego co pamiętam, któraś przeglądarka reagowała tylko na image/jpg (bez e)
Spróbuj dodać case 'image/jpg' i daj znać czy działa.

Nie jestem pewien czy to to, ale coś takiego mi chodzi po głowie tongue.gif
Koniczynka
Nie, to nie było to. Nie reagowała ani Mozilli, ani IE.
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.