ABMUpload is a control to upload files to the server. You can drag/drop files into the dropzone or use the button to select files (100K max for demo). The files will start uploading immediately one after each other. The user can cancel the upload clicking the 'x'.

Drop HereBrowse
// create the upload
Dim upload1 As ABMUpload
upload1.Initialize(page, "upload1", "Drop Here", "Browse", True, "upload")
page.Cell(2,1).AddComponent(upload1)

When the download is finished, you'll receive an FileUploaded() event on the page.

Sub Page_FileUploaded(FileName As String, success As Boolean)
   myToastId = myToastId + 1	
   If success Then
      page.ShowToast("toast" & myToastId, "toastgreen", "File " & FileName & " uploaded!", 5000)
   Else
      page.ShowToast("toast" & myToastId, "toastred", "File " & FileName & " uploaded!", 5000)
   End If
   page.ws.Flush // IMPORTANT
End Sub

Additionally, you have to add the following lines of code to WebSocket_Connected() and WebSocket_Disconnected()!

// In WebSocket_Connected()
ws.Session.SetAttribute("abmcallback", Me)	
ws.Session.SetAttribute("abmdownloadfolder", DownloadFolder)
ws.Session.SetAttribute("abmmaxsize", DownloadMaxSize)
// In WebSocket_Disconnected()
Try
	ws.Session.RemoveAttribute("abmcallback")	
	ws.Session.RemoveAttribute("abmdownloadfolder")
	ws.Session.RemoveAttribute("abmmaxsize")
Catch
	Log(LastException.Message)
End Try