You can write your own Java to import files from an on premise location where you have access to. Once you have a filedocument it is easy again. Just import the file with the correct template. Creating the template has to be done only once. In your microflow retrieve that template (by name or some other way) and retrieve through Java (or SFTP if your Java skills are not up to it, but you then need a SFTP server on premise where you can retrieve the file from) the file you want to import and do the stuff like in this microflow example. After the import you can then process the data.
Hope this helps,
Offcourse let the user upload the document is the easiest way.
What if I want to have the user upload the files, e.g., through a DropZone widget, and then work with the files from there to map to the import template, etc? Would this work?