Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JS][PHP] Pasek postępu do upladu plików
Forum PHP.pl > Forum > Po stronie przeglądarki
yarek12
Witam, korzystając z tego poradnika: http://www.matlus.com/html5-file-upload-with-progress/ napisałem pasek postępu, powiem tak, działa rewelacyjnie! Aż... Do momentu wrzucenia na serwer, podejrzewam że jest to wina linki odpowiadającej za otwieranie upload.php.

Oto mój kod:

test.php
  1. <!DOCTYPE html>
  2. <title>Upload Files using XMLHttpRequest - Minimal</title>
  3.  
  4. <script type="text/javascript">
  5. function fileSelected() {
  6. var file = document.getElementById('fileToUpload').files[0];
  7. if (file) {
  8. var fileSize = 0;
  9. if (file.size > 1024 * 1024)
  10. fileSize = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + 'MB';
  11. else
  12. fileSize = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
  13.  
  14. document.getElementById('fileName').innerHTML = 'Name: ' + file.name;
  15. document.getElementById('fileSize').innerHTML = 'Size: ' + fileSize;
  16. document.getElementById('fileType').innerHTML = 'Type: ' + file.type;
  17. }
  18. }
  19.  
  20. function uploadFile() {
  21. var fd = new FormData();
  22. fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]);
  23. var xhr = new XMLHttpRequest();
  24. xhr.upload.addEventListener("progress", uploadProgress, false);
  25. xhr.addEventListener("load", uploadComplete, false);
  26. xhr.addEventListener("error", uploadFailed, false);
  27. xhr.addEventListener("abort", uploadCanceled, false);
  28. xhr.open("POST", "Upload.php");
  29. xhr.send(fd);
  30. }
  31.  
  32. function uploadProgress(evt) {
  33. if (evt.lengthComputable) {
  34. var percentComplete = Math.round(evt.loaded * 100 / evt.total);
  35. document.getElementById('progressNumber').innerHTML = percentComplete.toString() + '%';
  36. document.getElementById("prg").style.width = percentComplete.toString() + '%';
  37. }
  38. else {
  39. document.getElementById('progressNumber').innerHTML = 'unable to compute';
  40. }
  41. }
  42.  
  43. function uploadComplete(evt) {
  44. /* This event is raised when the server send back a response */
  45. alert("Success upload");
  46. }
  47.  
  48. function uploadFailed(evt) {
  49. alert("There was an error attempting to upload the file.");
  50. }
  51.  
  52. function uploadCanceled(evt) {
  53. alert("The upload has been canceled by the user or the browser dropped the connection.");
  54. }
  55.  
  56. </script>
  57. </head>
  58. <form id="form1" method="post" enctype="multipart/form-data" action="?">
  59. <div class="row">
  60. <label for="fileToUpload">Select a File to Upload</label><br />
  61. <input type="file" name="fileToUpload" id="fileToUpload" onchange="fileSelected();"/>
  62. </div>
  63. <div id="fileName"></div>
  64. <div id="fileSize"></div>
  65. <div id="fileType"></div>
  66. <div class="row">
  67. <input type="button" onclick="uploadFile()" name="upload" value="Upload" />
  68. </div>
  69. <div id="progressNumber"></div>
  70. <div id="frame" style="width: 400px; border: 1px solid #000; height: 10px;"><div id="prg" style="background: red; height: 10px; width: 0%;"></div></div>
  71. </form>
  72. </body>
  73. </html>


Upload.php:
  1. <?php
  2. $file_tmp = $_FILES['fileToUpload']['tmp_name'];
  3. $file_name = $_FILES['fileToUpload']['name'];
  4. $file_size = $_FILES['fileToUpload']['size'];
  5. $file_mime = $_FILES['fileToUpload']['type'];
  6. if (is_uploaded_file($file_tmp)) {
  7. move_uploaded_file($file_tmp, 'files/'.$file_name);
  8. echo 1;
  9. }
  10. else {
  11. echo 0;
  12. }
  13. ?>
  14.  
  15.  
  16. Orientujących się w temacie bardzo proszę o pomoc.
  17. Pozdrawiam

[php][/php]
Kshyhoo
A jakie jest pytanie? Co nie działa?
yarek12
O boże sad.gif zapomniałem najważniejszego....

Chodzi o to, że na serwerze nie idpala pliku upload.php, więc tym samym plik nie zostaną wrzucone.
Kshyhoo
Jak to nie odpala? Masz uprawnienia wogóle do uploadu? Skrypt sprawdzony na innym serwerze? Jakieś komunikaty o błędach? Raportowanie włączone? Mamy myśleć za Ciebie?
yarek12
Nie, nie było testowane na innych serwerach, testowane tylko na localhost - działa.

Pytam co ewentualnie może właśnie być wyłączone na serwerze, nie jestem zaawansowany w programowaniu java, dlatego to pytanie, a co do upladu to tak, uprawnienia są. Wina na pewno leży po stronie skryptu, ponieważ upload.php samo w sobie działa dobrze, tylko 30 linijka kodu: xhr.open("POST", "Upload.php"); - nie odpala go na serwerze.
Kshyhoo
Ja myślę, że ni po stronie skryptu (skoro działa na localu), tylko po stronie serwera.
yarek12
Wiec jakie ustawienia serwera mogą odpowiadać za tą linijkę kodu? (tzn funkcje użyte w niej - 30 linijka)
zkr1965
Spróbuj może tak:
xhr.open("POST", "./upload.php");
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.