function uploadFile()

in ui/src/main/frontend/js/cms.fields.js [32:93]


      function uploadFile(meter, action, file) {
        const formData = new FormData();

        formData.append("*", file);
        formData.append("*@TypeHint", "sling:File");
        formData.append("_charset_", "utf-8");

        const xhr = new XMLHttpRequest();
        xhr.upload.addEventListener(
          "loadstart",
          () => {
            setProgress(meter, 0);
          },
          false
        );
        xhr.upload.addEventListener(
          "progress",
          (event) => {
            const percent = (event.loaded / event.total) * 100;
            setProgress(meter, percent);
          },
          false
        );
        xhr.upload.addEventListener(
          "load",
          () => {
            meter.classList.add("is-info");
          },
          false
        );
        xhr.addEventListener(
          "readystatechange",
          (event) => {
            let status;
            let text;
            let readyState;
            try {
              readyState = event.target.readyState;
              text = event.target.responseText;
              status = event.target.status;
            } catch (e) {
              meter.classList.add("is-danger");
            }
            if (readyState === 4) {
              meter.classList.remove("is-info");
              if (status === 200 && text) {
                meter.classList.add("is-success");
              } else {
                meter.classList.add("is-danger");
                console.warn(
                  "Failed to upload %s, recieved message %s",
                  file.name,
                  text
                ); // eslint-disable-line no-console
              }
            }
          },
          false
        );
        xhr.open("POST", action, true);
        xhr.send(formData);
      }