Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript]Skrypt ładowania pliku
Forum PHP.pl > Forum > Przedszkole
lolarz
index.html
  1. <form action="upload.php" method="post" enctype="multipart/form-data">
  2. <input name="plik" type="file" id="plik" size="10"/>
  3. <input name="max_file_size" type="hidden" value="10485760" /><br>
  4. <input value="Wyślij plik" type="submit" id="button" onclick="wyslijPlik()"/>
  5. <progress value="0" max="100" id="postep"></progress><br>
  6. <output id="status"></output>
  7.  
  8. <script src="upload.js"></script>


upload.js (pasek postępu)
  1.  
  2. function wyslijPlik() {
  3. var plik=document.getElementById("plik").files[0];
  4.  
  5. var formularz=new FormData(); //tworzymy nowy formularz do wyslnia
  6. formularz.append("plik", plik); //dodajemy do formularza pole z naszym plikiem
  7.  
  8. /* wysylamy formularz za pomoc٠AJAX */
  9. var xhr=new XMLHttpRequest();
  10. xhr.upload.addEventListener("progress", postepWysylania, false);
  11. xhr.addEventListener("load", zakonczenieWysylania, false);
  12. xhr.addEventListener("error", bladWysylania, false);
  13. xhr.addEventListener("abort", przerwanieWysylania, false);
  14. xhr.open("POST", "upload.php", true);
  15. xhr.send(formularz);
  16. }
  17.  
  18. function postepWysylania(event) {
  19. var procent=Math.round((event.loaded/event.total)*100);
  20. document.getElementById("status").innerHTML="Wysłano "+konwersjaBajtow(event.loaded)+" z "+konwersjaBajtow(event.total)+" ("+procent+"%)";
  21. document.getElementById("postep").value=procent;
  22. }
  23.  
  24. function zakonczenieWysylania(event) {
  25. document.getElementById("status").innerHTML=event.target.responseText;
  26. }
  27.  
  28. function bladWysylania(event) {
  29. document.getElementById("status").innerHTML="Wysyłanie nie powiodło się";
  30. }
  31.  
  32. function przerwanieWysylania(event) {
  33. document.getElementById("status").innerHTML="Wysyłanie zostało przerwane";
  34. }
  35.  
  36. function konwersjaBajtow(bajty) {
  37. var kilobajt=1024;
  38. var megabajt=kilobajt*1024;
  39. var gigabajt=megabajt*1024;
  40. var terabajt=gigabajt*1024;
  41.  
  42. if (bajty>=0 && bajty<kilobajt) return bajty+" B";
  43. else if(bajty>=kilobajt && bajty<megabajt) return Math.round(bajty/kilobajt)+" kB";
  44. else if(bajty>=megabajt && bajty<gigabajt) return Math.round(bajty/megabajt)+" MB";
  45. else if(bajty>=gigabajt && bajty<terabajt) return Math.round(bajty/gigabajt)+" GB";
  46. else if(bajty>=terabajt) return Math.round(bajty/terabajt)+" TB";
  47. else return bajty+" B";
  48. }


upload.php
  1. <?php
  2. /* utworzenie zmiennych */
  3. $folder = 'upload/';
  4. $plik_nazwa=$_FILES['plik']['name'];
  5. $plik_lokalizacja=$_FILES['plik']['tmp_name']; //tymczasowa lokalizacja pliku
  6. $plik_mime=$_FILES['plik']['type']; //typ MIME pliku wysłany przez przeglądarkę
  7. $plik_rozmiar=$_FILES['plik']['size'];
  8. $plik_blad=$_FILES['plik']['error']; //kod błędu
  9.  
  10. if (!$plik_lokalizacja) {
  11. exit("Nie wysłano żadnego pliku");
  12. }
  13.  
  14. switch ($plik_blad) {
  15. case UPLOAD_ERR_OK:
  16. break;
  17. case UPLOAD_ERR_NO_FILE:
  18. exit("Brak pliku.");
  19. break;
  20. case UPLOAD_ERR_INI_SIZE:
  21. case UPLOAD_ERR_FORM_SIZE:
  22. exit("Przekroczony maksymalny rozmiar pliku.");
  23. break;
  24. default:
  25. exit("Nieznany błąd.");
  26. break;
  27. }
  28.  
  29. $dozwolone_rozszerzenia=array("jpeg", "jpg", "tiff", "tif", "png", "gif");
  30. $plik_rozszerzenie=pathinfo(strtolower($plik_nazwa), PATHINFO_EXTENSION);
  31. if (!in_array($plik_rozszerzenie, $dozwolone_rozszerzenia, true)) {
  32. exit("Niedozwolone rozszerzenie pliku.");
  33. }
  34.  
  35. if (!move_uploaded_file($plik_lokalizacja, $folder.$plik_nazwa)) {
  36. exit("Nie udało się przenieść pliku.");
  37. }
  38.  
  39. echo "Plik został zapisany.";
  40. ?>


Upload.php działa - pliki sie przesyłają. Skrypt upload.js za każdym razem wyświetla błąd: document.getElementById("status").innerHTML="Wysyłanie nie powiodło się". Co może być przyczyną?
Wszystko brałem stąd LINK
trueblue
Spróbuj ustawić header (przed .send):
xhr.setRequestHeader("Content-Type","multipart/form-data");
lolarz
Jeżeli miało to tak wyglądać to nadal nie działa :/

  1. xhr.open("POST", "./index.php", true);
  2. xhr.setRequestHeader("Content-Type","multipart/form-data");
  3. xhr.send(formularz);
trueblue
Teraz masz index.php, a nie upload.php.
Ustal który plik odpowiada za upload i czy ścieżka do niego jest poprawna.
Sprawdź konsolę przeglądarki (Chrome->F12->Console).
lolarz
Zmieniłem "./index.php" na "upload.php", nadal nic.
W konsoli wyskakuje błąd:
ReferenceError: bmone2n is not defined upload.php (wiersz 14)
ReferenceError: bmone2n is not defined upload.php (wiersz 16, kolumna 16)
ReferenceError: bmone2n is not defined upload.php (wiersz 17, kolumna 16)
trueblue
Trudno mi powiedzieć, testowałem kod oryginalny ze strony pod SWIron i jest ok.
Pod jaką przeglądarką testujesz?
lolarz
Używam Firefoxa

W oryginalnym kodzie zmieniałem jedynie:
  1. $folder_upload="./upload"
na
  1. $folder = 'upload/'

oraz
  1. if (!move_uploaded_file($plik_lokalizacja, $folder_upload."/".$plik_nazwa))
na
  1. if (!move_uploaded_file($plik_lokalizacja, $folder.$plik_nazwa))


Czy przez to kod może nie działać?
trueblue
Czyżby hosting cba.pl?
http://www.cba.pl/forum/viewtopic.php?f=30...t=15246#p108741
com
i ta zmiana była błędem, poco to zmieniałeś?
lolarz
Zgadza się. Czyli jak rozumiem jedynym rozwiązaniem będzie wyłączenie reklam lub zmiana hostingu ?
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.