<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <style>
    body, html {
        width: 100%;
        height: 100%;
        margin: 0;
        font-family: -apple-system;
    }

    #input, #upload {
        width: 100%;
        height: 200px;
        border: 1px blue dashed;
    }

    #output {
        width: 100%;
        height: 100px;
        font-size: 1em;
    }
    </style>
</head>

<body>
    <div><input type="file" id="input"></input></div>
    <div id="upload"></div>
    <div><h3>Uploaded file types: </h3><textarea disabled id="output"></textarea></div>
    <script>
    input.addEventListener("change", () => {
        sendUploadedFileTypesToApp(input.files);
    });

    upload.addEventListener("dragenter", event => {
        event.preventDefault();
        if (upload.dropEffect)
            event.dataTransfer.dropEffect = upload.dropEffect;
    });

    upload.addEventListener("dragover", event => {
        event.preventDefault();
        if (upload.dropEffect)
            event.dataTransfer.dropEffect = upload.dropEffect;
    });

    upload.addEventListener("drop", event => {
        sendUploadedFileTypesToApp(event.dataTransfer.files);
        event.preventDefault();
    });

    function sendUploadedFileTypesToApp(files)
    {
        output.value = Array.from(files).map(file => file.type).sort().join(", ");
    }
    </script>
</body>
