Carga de archivos usando el arrastrar y soltar de HTML5 en Asp.net

Estoy tratando de cargar un archivo utilizando DnD y API de archivos de HTML5. No estoy seguro de cómo enviar los datos del formulario al servidor, traté de enviarlo utilizando XMLHttpRequest pero no tuve éxito. Esto es lo que tengo hasta ahora.

    <body>
        <form id="form1" runat="server" enctype="multipart/form-data">        
            <br />
            <div id="drop_area">Drop files here</div> <br />
           <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button"/>
        </form>
    </body>

     <script>
            if (window.File && window.FileList && window.FileReader) {
                var dropZone = document.getElementById('drop_area');
                dropZone.addEventListener('dragover', handleDragOver, false);
                dropZone.addEventListener('drop', handleDnDFileSelect, false);
            }
            else {
                alert('Sorry! this browser does not support HTML5 File APIs.');
            }
            </script>
     var files;
            function handleDragOver(event) {
                event.stopPropagation();
                event.preventDefault();
                var dropZone = document.getElementById('drop_zone');
                dropZone.innerHTML = "Drop now";
            }

            function handleDnDFileSelect(event) {
                event.stopPropagation();
                event.preventDefault();

                /* Read the list of all the selected files. */
                 files = event.dataTransfer.files;

                /* Consolidate the output element. */
                 var form = document.getElementById('form1');
                 var data = new FormData(form);

                 for (var i = 0; i < files.length; i++) {

                     data.append(files[i].name, files[i]);
                 }

                 var xhr = XMLHttpRequest();
                 xhr.open("POST", "Upload.aspx"); //Wrong ? not sure.
                 xhr.setRequestHeader("Content-type", "multipart/form-data");
                 xhr.send(data);                
            }

DO#:

     HttpFileCollection fileCollection = Request.Files;
                for (int i = 0; i < fileCollection.Count; i++)
                {
                    HttpPostedFile upload = fileCollection[i];
                    string filename ="c:\\Test\\" +  upload.FileName;
                    upload.SaveAs(filename);
                }       

Sé que tengo un botón en la interfaz de usuario, a partir de ahora no estoy usando. Pero como puede ver, estoy intentando enviar una solicitud utilizando XMLHttpRequest. ¿Alguien puede sugerirme cómo puedo seguir adelante. Pero el código del lado del servidor nunca se ejecuta, no estoy seguro de si XMLHttpRequest tuvo éxito.

Respuestas a la pregunta(1)

Su respuesta a la pregunta