Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Upload wielu plików naraz
Forum PHP.pl > Forum > Przedszkole
Michal2451
Cześć!
Piszę skrypt i chciałbym, żeby można było wysyłać kilka zdjęć na raz i żeby dodawało ścieżki do bazy.
Może mi ktoś wytłumaczyć jak to zrobić? Bo nie mam zielonego pojęcia.
Wiem, że pierwszą rzeczą to:
  1. <input type="file" name="nazwa" multiple="multiple">

Następnie jak w php i mysql? Napisałem skrypt na wysyłanie pojedynczych zdjęć i dobrze działa.
Teraz potrzebuję go przerobić. Proszę o pomoc.

Pozdrawiam!


A tutaj mój skrypt na pojedyncze obrazki.
index.php:
  1. <form action="dodaj.php" method="post" enctype="multipart/form-data" name="form1">
  2. <center>
  3. Kto wysyła?<br>
  4. <input type="text" name="autor" maxlength="18" /><br><BR>
  5. Adres email<BR>
  6. <input type="text" name="email" maxlength="40" /><br><BR>
  7. Wiadomość<br>
  8. <textarea cols="40" rows="7" name="wiadomosc"></textarea><BR><BR>
  9. </center>
  10. <table width="422" border="1" align="center" bordercolor="#0000FF" bgcolor="#C0C0C0">
  11. <tr>
  12. </tr>
  13. <tr>
  14. <th width="444" scope="row"><input name="plik" type="file" size="50"/>
  15. <input name="max_file_size" type="hidden" value="4194304" /></th>
  16. </tr>
  17. <tr>
  18. <th scope="row"><input value="Wyślij plik" type="submit" /> </th>
  19. </tr>
  20. </table>
  21. </form>

dodaj.php:
  1. <?php
  2. include("config.php");
  3.  
  4. $p_pojemnosc=$_FILES['plik']['size'];
  5. $p_typ=$_FILES['plik']['type'];
  6. $p_nazwa=$_FILES['plik']['name'];
  7. $p_smiec=$_FILES['plik']['tmp_name'];
  8. $autor=$_POST['autor'];
  9. $email=$_POST['email'];
  10. $wiadomosc=$_POST['wiadomosc'];
  11. $data = date('Y-m-d-G:i:s');
  12.  
  13. $p_roz= array_pop(explode(".", $p_nazwa));
  14. $max_size=round(($_POST['max_file_size']/1048576),3)."MB";
  15. $poj_MB=round(($p_pojemnosc/1048576),2).'MB';
  16.  
  17. $p_nazwa_zm=(md5($p_nazwa)).".".$p_roz;
  18. $folder="upload/";
  19.  
  20. $ext = substr( $p_nazwa, strrpos( $p_nazwa, '.' ) +1 ); //wyciąganie rozszerzenia
  21. $dozwolone = array('png', 'gif', 'jpg'); //dozwolone rozszerzenia
  22.  
  23. if (in_array($ext, $dozwolone)) { //sprawdzanie czy rozszerzenie jest poprawne
  24.  
  25. if ($p_pojemnosc <= 0)
  26. {
  27. echo ("Plik jest pusty nie mogę go przesłać <b>".$p_nazwa." ".$poj_MB."</b><br />");
  28. echo "<a href=index.php>Wróć</a>";
  29. }
  30.  
  31. if ($poj_MB > $max_size)
  32. {
  33. echo("Plik jest za duży maksymalnie można wysłać <b>".$max_size."</b>"." .Plik wysyłany ma rozmiar <b><i>".$poj_MB."</b></i><br />");
  34. echo "<a href=index.php>Wróć";
  35. }
  36.  
  37. if (file_exists($folder.$p_nazwa_zm))
  38. {
  39. echo ("Plik o takiej nazwie jest już na serwerze <b><i>".$p_nazwa_zm."</b></i><br />");
  40. echo "<a href=index.php>Wróć";
  41. }
  42. else {
  43. if(!@move_uploaded_file($p_smiec, $folder.$p_nazwa_zm))
  44. exit('Nie mozna zachowac pliku. Prawdopodobnie nie ma folderu lub nie można w nim zapisać');
  45.  
  46. echo "Przeslanie udało się - <b>".$p_nazwa."</b>"." ".$poj_MB."<br />";
  47. $path_file="$folder"."$p_nazwa_zm";
  48.  
  49. $zapytanie=mysql_query("insert into pliki values('','$p_pojemnosc','$path_file','$p_typ','$autor','$email','$wiadomosc','$data')");
  50. echo "<a href=index.php>Wróć";
  51. }
  52. } else {
  53. echo ("Niedozwolony typ pliku!");
  54. echo "<a href=index.php>Wróć";
  55. }
  56.  
  57. ?>

d3ut3r
Można np tak:

  1. <form action="test.php" method="post" enctype="multipart/form-data">
  2. <input type="file" name="pliki[]" multiple="multiple" />
  3. <input type="submit" />
  4. </form>


  1. $filesArr = isset($_FILES['pliki'])? $_FILES['pliki'] : array();
  2.  
  3. if (isset($filesArr['name'])){
  4.  
  5. foreach ($filesArr['name'] as $index=>$fileName){
  6.  
  7. echo $fileName.'<br />'; // nazwa pliku
  8.  
  9. echo $filesArr['type'][$index].'<br />'; //typ pliku
  10. echo $filesArr['tmp_name'][$index].'<br />'; //lokalizacja w folderze tymczasowym
  11. echo $filesArr['error'][$index].'<br />'; //ewentualny błąd
  12. echo $filesArr['size'][$index].'<br />'; //rozmiar pliku
  13.  
  14. echo '<hr />';
  15. }
  16.  
  17. }


tutaj w komentarzach masz przykłady jak można złożyć tablicę do mniej problematycznego formatu http://php.net/manual/en/features.file-upload.multiple.php
Michal2451
No ale co z zapytaniem do bazy, sprawdzaniem rozszerzenia i sprawdzaniem plików?
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.