Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zmiana nazwy pliku przy dodawaniu go przez formularz na strone
Forum PHP.pl > Forum > Przedszkole
rts
Witam. Mam formularz przez który dodaje się zdjęcia na stronie ale jeśli dwa różne zdjęcia będą miały taką samą nazwę to będą się wyświetlały jako to samo zdjęcie.
Jak zrobić aby przy dodawaniu zdjęcia nazwa się zmieniała na losowy ciąg znaków?
Pozdrawiam
Cysiaczek
uniqid
Doklejasz np na końcu pliku i tyle smile.gif

Pozdrawiam.
rts
Ale nie bardzo wiem gdzie mam to umieścić sad.gif

Kod mam taki:

  1. <?
  2. include("include/common.php");
  3.  
  4. if(!$loggedin){
  5. header("Location: login.php");
  6. }
  7. include("include/header.php");
  8. include("include/accmenu.php");
  9.  
  10. if($submit){
  11. if($_POST['delimg']){
  12. mysql_query("UPDATE portfolio SET imagefile='' WHERE id='$oid'");
  13. if(file_exists("./uploads/".$_POST['delimg']))@unlink("./uploads/".$_POST['delimg']);
  14. }
  15. if($_POST['delimg2']){
  16. mysql_query("UPDATE portfolio SET imagefile2='' WHERE id='$oid'");
  17. if(file_exists("./uploads/".$_POST['delimg2']))@unlink("./uploads/".$_POST['delimg2']);
  18. }
  19. if($_POST['delimg3']){
  20. mysql_query("UPDATE portfolio SET imagefile3='' WHERE id='$oid'");
  21. if(file_exists("./uploads/".$_POST['delimg3']))@unlink("./uploads/".$_POST['delimg3']);
  22. }
  23. if($_POST['delimg4']){
  24. mysql_query("UPDATE portfolio SET imagefile4='' WHERE id='$oid'");
  25. if(file_exists("./uploads/".$_POST['delimg4']))@unlink("./uploads/".$_POST['delimg4']);
  26. }
  27. if($oid){
  28. $sql = "UPDATE portfolio SET title='$ctitle',body='$cbody'";
  29. if( $_FILES['image']['name'] ){
  30. $sql .= ",imagefile='".$_FILES['image']['name']."'";
  31. }
  32. if( $_FILES['image2']['name'] ){
  33. $sql .= ",imagefile2='".$_FILES['image2']['name']."'";
  34. }
  35. if( $_FILES['image3']['name'] ){
  36. $sql .= ",imagefile3='".$_FILES['image3']['name']."'";
  37. }
  38. if( $_FILES['image3']['name'] ){
  39. $sql .= ",imagefile4='".$_FILES['image4']['name']."'";
  40. }
  41. $sql .= " WHERE id='$oid'";
  42. }else{
  43. $sql = "INSERT INTO portfolio SET title='$ctitle',body='$cbody',user='$myuid'";
  44. if( $_FILES['image']['name'] ){
  45. $sql .= ",imagefile='".$_FILES['image']['name']."'";
  46. }
  47. if( $_FILES['image2']['name'] ){
  48. $sql .= ",imagefile2='".$_FILES['image2']['name']."'";
  49. }
  50. if( $_FILES['image3']['name'] ){
  51. $sql .= ",imagefile3='".$_FILES['image3']['name']."'";
  52. }
  53. if( $_FILES['image3']['name'] ){
  54. $sql .= ",imagefile4='".$_FILES['image4']['name']."'";
  55. }
  56. }
  57. // echo $sql."<br>";
  58. mysql_query($sql) or die( mysql_error()."<br>$sql<bR>" );
  59. if(!$oid){
  60. $oid = mysql_insert_id();
  61. }
  62. if( $_FILES['image']['name'] ){
  63. if($_POST['oldimg'])@unlink("./uploads/".$_POST['oldimg']);
  64. $match=0;
  65. $sent=move_uploaded_file($_FILES['image']['tmp_name'], "./uploads/".$_FILES['image']['name']);
  66. if(!$sent){
  67. echo ("<script>window.alert('File upload has failed.');</script>");
  68. }else{
  69. echo ("<script>window.alert('File upload of file type $type was sucessfull');</script>");
  70. }
  71. }
  72. if( $_FILES['image2']['name'] ){
  73. if($_POST['oldimg2'])@unlink("./uploads/".$_POST['oldimg2']);
  74. $sent=move_uploaded_file($_FILES['image2']['tmp_name'], "./uploads/".$_FILES['image2']['name']);
  75. if(!$sent){
  76. echo ("<script>window.alert('File upload has failed.');</script>");
  77. }else{
  78. echo ("<script>window.alert('File upload of file type $type was sucessfull');</script>");
  79. }
  80. }
  81. if( $_FILES['image3']['name'] ){
  82. if($_POST['oldimg3'])@unlink("./uploads/".$_POST['oldimg3']);
  83. $sent=move_uploaded_file($_FILES['image3']['tmp_name'], "./uploads/".$_FILES['image3']['name']);
  84. if(!$sent){
  85. echo ("<script>window.alert('File upload has failed.');</script>");
  86. }else{
  87. echo ("<script>window.alert('File upload of file type $type was sucessfull');</script>");
  88. }
  89. }
  90. if( $_FILES['image4']['name'] ){
  91. if($_POST['oldimg4'])@unlink("./uploads/".$_POST['oldimg4']);
  92. $sent=move_uploaded_file($_FILES['image4']['tmp_name'], "./uploads/".$_FILES['image4']['name']);
  93. if(!$sent){
  94. echo ("<script>window.alert('File upload has failed.');</script>");
  95. }else{
  96. echo ("<script>window.alert('File upload of file type $type was sucessfull');</script>");
  97. }
  98. }
  99.  
  100. ?>
  101. <h3>Edycja Galerii</h3>
  102. <?=$table2?>
  103. <tr align=center>
  104. <td colspan=2>Dane zostały zapisane.</td>
  105. </tr>
  106. <?
  107. echo "</table>";
  108. }else{
  109. if($oid){
  110. $this->c=mysql_query("select * from portfolio where id='$oid'");
  111. $this->d=mysql_fetch_object($this->c);
  112. if(is_object($this->d)) {
  113. $cid = $this->d->id;
  114. $ctitle = $this->d->title;
  115. $cbody = $this->d->body;
  116. $imagefile = $this->d->imagefile;
  117. $imagefile2 = $this->d->imagefile2;
  118. $imagefile3 = $this->d->imagefile3;
  119. $imagefile4 = $this->d->imagefile4;
  120. }
  121. }
  122. ?>
  123. <h3>Edycja Galerii</h3>
  124. <form method=post ENCTYPE="multipart/form-data">
  125. <? if($oid)echo "<input type='hidden' name='oid' value='$oid'"; ?>
  126. <?=$table2?>
  127. <tr>
  128. <td colspan=2>Jednorazowo możesz dodać 4 zdjęcia do galerii, po zapisaniu możesz dodawać na
    stępne. Nie ma limitu wielkoście zdjęcia jednak nie może zajmować więcej niż 1MB.<br><br></td>
  129. </tr>
  130. <tr>
  131. <td>Tytuł:</td>
  132. <td><input type="text" name="ctitle" value="<?=$ctitle?>">
  133. <tr>
  134. <td>Opis Galerii:</td>
  135. <td>
  136. <textarea name=cbody cols=50 rows=10><?=$cbody?></textarea>
  137. </td>
  138. </tr>
  139. <tr>
  140. <td>Zdjęcie 1:</td>
  141. <td>
  142. <INPUT NAME="image" TYPE="file">
  143. <?
  144. if($oid && $imagefile){
  145. echo "&nbsp; 
  146. <input type=hidden name=oldimg value='$imagefile'> 
  147. <input type=checkbox class=checkbox name=delimg value='$imagefile'> 
  148. Usuń (<a href='$siteurl/uploads/$imagefile","' target=_blank>Zobacz zdjęcie</a>)";
  149. }
  150. ?>
  151. </td>
  152. </tr>
  153. <tr>
  154. <td>Zdjęcie 2:</td>
  155. <td>
  156. <INPUT NAME="image2" TYPE="file">
  157. <?
  158. if($oid && $imagefile2){
  159. echo "&nbsp; 
  160. <input type=hidden name=oldimg2 value='$imagefile2'> 
  161. <input type=checkbox class=checkbox name=delimg2 value='$imagefile2'> 
  162. Usuń (<a href='$siteurl/uploads/$imagefile2","' target=_blank>Zobacz zdjęcie</a>)";
  163. [...]


Gdzie i jak to poprawnie włożyć?
rts
Dosałem na kończu pliku

  1. <?php
  2. // no prefix
  3. $token = md5(uniqid());
  4. ?>


ale to nic nie daje sad.gif
Na pewno coś zle robie..
jarrod
  1. <?php
  2. $token = md5(uniqid());
  3. move_uploaded_file($_FILES['image']['tmp_name'], './uploads/'.$token.'tutaj_rozszerzenie_pliku');
  4. ?>

i powinno zadziałać
rts
Dodałem
  1. <?php
  2. $token = md5(uniqid.time());
  3. move_uploaded_file($_FILES['image']['tmp_name'], './uploads/'.$token.'.jpg');
  4. ?>

i nazwa się zmienia ale na stronie można dodawać 4 zdjęcia jednocześnie i nazwa się zmienia tylko temu pierwszemu, pozostałe zachowują nazwę oryginalną...

I drugi problem jest taki, że na stronie gdzie wyświetlają sie miniaturki z linkiem do dużego zdjęcia adres (nazwa zdjęcia) jest ta stara a nie wygenerowana :/
jarrod
w takim razie zmienna $_FILES['image']['tmp_name'] jest tablicą nazw tymczasowych plików.

Wówczas przenoszenie pliku umieszczasz w pętli:
  1. <?php
  2. foreach($_FILES['image']['tmp_name'] as $tmp)
  3. {
  4. $token = md5(uniqid.time());
  5.  move_uploaded_file($_FILES['image']['tmp_name'], './uploads/'.$token.'.jpg');
  6. }
  7. ?>


A jeślli chodzi o dodanie do bazy to zrób to w tej pętli podając aktualnie wygenerowany hash. Możesz też nazwy przechowywać w tablicy i później zbudować zapytania. To już zależy od ciebie.

Moim zdaniem najprościej będzie zbudować klasę do obsługi uploadu. Sam sobie kiedyś taką zrobiłem i okazało się że do tej pory używam jej przy różnych projektach. Nie bawię się później w obsługę plików tylko używam gotowych metod.
rts
Dodanie

  1. <?php
  2. foreach($_FILES['image']['tmp_name'] as $tmp);
  3. {
  4. $token = md5(uniqid.time());
  5.  move_uploaded_file($_FILES['image']['tmp_name'], './uploads/'.$token.'.jpg');
  6. }
  7. ?>


niestety nie pomogło, dalej tylko pierwszy plik zmienia nazwe a pozostałe zachowują oryginalną.

Jeszcze mam drugi problem, mam taki kod:

  1. <?
  2. include("include/common.php");
  3.  
  4. if(!$loggedin){
  5. header("Location: login.php");
  6. }
  7. include("include/header.php");
  8. include("include/accmenu.php");
  9. if($del){
  10. // delete;
  11. }
  12. ?>
  13. <h3>Edytuj Swoje Galerie.</h3>
  14. <?=$table2?>
  15. <tr>
  16. <td colspan=2>Edytuj Swoje Galerie.<br><br></td>
  17. </tr>
  18. <?
  19. $this->c=mysql_query("select * from portfolio where user='$myuid'");
  20. while( $this->d=mysql_fetch_object($this->c) ){
  21. ?>
  22. <tr>
  23. <td><?=$this->d->title?>
  24. <td>
  25. <a href="editimg2.php?oid=<?=$this->d->id?>">Edytuj</a>
  26. <a href="editimg.php?del=<?=$this->d->id?>">Usuń</a>
  27. </td>
  28. </tr>
  29. <?
  30. }
  31. ?>
  32. <tr>
  33. <td colspan=2>
  34. <a href="editimg2.php">Dodaj Nową Galerię</a>
  35. </td>
  36. </tr>
  37. </table>
  38. <? include("include/footer.php"); ?>


Po naciśnięciu na usuń galeria powinna się kasować ale nic się nie dzieje sad.gif
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.