I suggest you to communicate with the controller, which will update the View. In this case, it would be a Supervising Controller, instead of the classic one.
A Supervising Controller has two primary responsibilities: input response and partial view/model synchronization. (Martin Fowler on Supervising Controller)
For that, I would create a callback interface on the model with an implementation on the controller. When calling download or constructing the model, or in a register method, I would pass the callback object from controller to model, and then the model would call update methods on it that would be treated in controller to update the GUI.
One important thing in your case is threading. As you're using JavaFX, if you do all of this in the main thread, your GUI will "freeze". So you must create another thread to donwnload your files.
Also, when in another thread, you won't be able to update the GUI. To do it correctly, you should use Platform.runLater(java.lang.Runnable runnable)
, so the Runnable passed will be executed on Main Thread by JavaFX.