upload.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. var maxSize = '512';
  2. var urlPrefix = '';
  3. var xhr = new XMLHttpRequest();
  4. xhr.onreadystatechange = function() {
  5. if (xhr.readyState == XMLHttpRequest.DONE) {
  6. if(xhr.responseText !== 'not-authorized'){
  7. document.getElementById('btnGithub').style.display = 'none';
  8. document.getElementById('dropzone').style.display = 'flex';
  9. }
  10. if(xhr.responseText.maxFileSize)
  11. maxSize = xhr.responseText.maxFileSize;
  12. if(xhr.responseText.urlPrefix)
  13. urlPrefix = xhr.responseText.urlPrefix + '/';
  14. }
  15. }
  16. xhr.open('GET', '/api/info', true);
  17. xhr.send(null);
  18. window.onload = function () {
  19. var previewNode = document.querySelector("#template");
  20. previewNode.id = "";
  21. var previewTemplate = previewNode.parentNode.innerHTML;
  22. previewNode.parentNode.removeChild(previewNode);
  23. var dropzone = new Dropzone('div#dropzone', {
  24. url: '/api/upload',
  25. paramName: 'file',
  26. maxFilesize: maxSize,
  27. parallelUploads: 2,
  28. uploadMultiple: false,
  29. previewsContainer: 'div#uploads',
  30. previewTemplate: previewTemplate,
  31. createImageThumbnails: false,
  32. maxFiles: 1000,
  33. autoProcessQueue: true
  34. });
  35. // Update the total progress bar
  36. dropzone.on("uploadprogress", function(file, progress) {
  37. file.previewElement.querySelector(".progress").style.width = progress + "%";
  38. });
  39. dropzone.on("success", function(file, response) {
  40. // Handle the responseText here. For example, add the text to the preview element:
  41. a = document.createElement('a');
  42. a.href = window.location.origin + '/' + urlPrefix + response.filename;
  43. a.target = '_blank';
  44. a.innerHTML = response.filename;
  45. file.previewTemplate.querySelector(".progress").style.display = 'none';
  46. file.previewTemplate.querySelector(".link").appendChild(a);
  47. });
  48. };