upld.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. Upld.js
  3. This script can be included in any other pages
  4. to provide file upload functions
  5. Usage: handleFile(file, dir, callback)
  6. E.g.
  7. const blob = new Blob(["Hello World!"], { type: 'text/plain' });
  8. const file = new File([blob], "hello.txt");
  9. handleFile(file, "/down/", function(){
  10. alert("Upload done");
  11. });
  12. */
  13. function handleFile(file, dir, callback=undefined) {
  14. // Perform actions with the selected file
  15. console.log('Uploading file:', file);
  16. var formdata = new FormData();
  17. formdata.append("file1", file);
  18. var ajax = new XMLHttpRequest();
  19. ajax.upload.addEventListener("progress", progressHandler, false);
  20. ajax.addEventListener("load", function(event){
  21. completeHandler(event);
  22. if (callback != undefined){
  23. callback();
  24. }
  25. }, false); // doesnt appear to ever get called even upon success
  26. ajax.addEventListener("error", errorHandler, false);
  27. ajax.addEventListener("abort", abortHandler, false);
  28. ajax.open("POST", "/upload?dir=" + dir);
  29. ajax.send(formdata);
  30. }
  31. function progressHandler(event) {
  32. //_("loaded_n_total").innerHTML = "Uploaded " + event.loaded + " bytes of " + event.total; // event.total doesnt show accurate total file size
  33. var percent = (event.loaded / event.total) * 100;
  34. $("#uploadProgressBar").find(".bar").css("width", Math.round(percent) + "%");
  35. console.log("Uploaded " + event.loaded + " bytes => " + percent +"%");
  36. if (percent >= 100) {
  37. $("#uploadProgressBar").find(".bar").css("width", "100%");
  38. //_("status").innerHTML = "Please wait, writing file to filesystem";
  39. }
  40. }
  41. function completeHandler(event) {
  42. }
  43. function errorHandler(event) {
  44. }
  45. function abortHandler(event) {
  46. }