upload.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. const nanoid = (length) => {
  2. const characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  3. let id = '';
  4. for (let i = 0; i < length; i++) {
  5. const randomIndex = Math.floor(Math.random() * characters.length);
  6. id += characters[randomIndex];
  7. }
  8. return id;
  9. }
  10. document.addEventListener("DOMContentLoaded", () => {
  11. if(Cookies.get("user") == null || Cookies.get("user") == undefined) {
  12. alert("You need to be logged in to upload videos!");
  13. window.location.pathname = "/";
  14. }
  15. document.getElementById("form").addEventListener("submit", (event) => {
  16. const data = new FormData(document.getElementById("form"));
  17. event.preventDefault();
  18. data.set("uploader", Cookies.get("user"));
  19. if(data.get("thumbnail").size < 1) return alert("Please enter valid form data");
  20. if(data.get("video").size < 1) return alert("Please enter valid form data");
  21. if(data.get("title").trim() == "") return alert("Please enter valid form data");
  22. axios.post("/api/upload", data, {
  23. headers: {
  24. 'Content-Type': 'multipart/form-data'
  25. },
  26. onUploadProgress: function(event) {
  27. const percent = (event.loaded / event.total) * 100
  28. document.getElementById("progress-bar").setAttribute('value', percent);
  29. document.getElementById("progress").innerText = `${percent}%`
  30. },
  31. }).then(data => {
  32. if(data.status == 201) {
  33. alert("Upload successfull!");
  34. window.location.pathname = `/video/${data.data.id}`
  35. }
  36. }).catch(error => {
  37. if(error.response) {
  38. alert(error.response.data.message)
  39. }
  40. throw new Error(`upload error: ${error}`);
  41. })
  42. })
  43. });