upload.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. window.onload = function () {
  2. var maxSize = '512';
  3. if(!localStorage.token){
  4. document.getElementById('tokenContainer').style.display = 'flex'
  5. document.getElementById("tokenSubmit").addEventListener("click", function(){
  6. getInfo(document.getElementById("token").value)
  7. });
  8. }else{
  9. getInfo(localStorage.token);
  10. }
  11. function prepareDropzone(){
  12. var previewNode = document.querySelector("#template");
  13. previewNode.id = "";
  14. var previewTemplate = previewNode.parentNode.innerHTML;
  15. previewNode.parentNode.removeChild(previewNode);
  16. var dropzone = new Dropzone('div#dropzone', {
  17. url: '/api/upload',
  18. paramName: 'file',
  19. maxFilesize: maxSize,
  20. parallelUploads: 2,
  21. uploadMultiple: false,
  22. previewsContainer: 'div#uploads',
  23. previewTemplate: previewTemplate,
  24. createImageThumbnails: false,
  25. maxFiles: 1000,
  26. autoProcessQueue: true,
  27. headers: {
  28. 'auth': localStorage.token
  29. },
  30. init: function() {
  31. this.on("addedfile", function(file) {
  32. document.getElementById('uploads').style.display = 'block';
  33. });
  34. }
  35. });
  36. // Update the total progress bar
  37. dropzone.on("uploadprogress", function(file, progress) {
  38. file.previewElement.querySelector(".progress").style.width = progress + "%";
  39. });
  40. dropzone.on("success", function(file, response) {
  41. // Handle the responseText here. For example, add the text to the preview element:
  42. a = document.createElement('a');
  43. a.href = response.url;
  44. a.target = '_blank';
  45. a.innerHTML = response.url;
  46. file.previewTemplate.querySelector(".progress").style.display = 'none';
  47. file.previewTemplate.querySelector(".link").appendChild(a);
  48. });
  49. }
  50. function getInfo(token) {
  51. var xhr = new XMLHttpRequest();
  52. xhr.onreadystatechange = function() {
  53. if (xhr.readyState == XMLHttpRequest.DONE) {
  54. if(xhr.responseText !== 'not-authorized'){
  55. div = document.createElement('div');
  56. div.id = 'dropzone';
  57. div.innerHTML = 'Click here or drag and drop files';
  58. div.style.display = 'flex';
  59. document.getElementById('btnGithub').style.display = 'none';
  60. document.getElementById('tokenContainer').style.display = 'none';
  61. document.getElementById('uploadContainer').appendChild(div);
  62. if(xhr.responseText.maxFileSize) maxSize = xhr.responseText.maxFileSize;
  63. if(token) localStorage.token = token;
  64. prepareDropzone();
  65. }
  66. }
  67. }
  68. xhr.open('GET', '/api/info', true);
  69. xhr.setRequestHeader('auth', token);
  70. xhr.send(null);
  71. }
  72. };