Indirect file exchange between a public and a local server – using a browser client

I am trying to build a complete solution (both server code and client code) where i have one of the backend servers hosted in a public cloud exposed to the internet and another backend server behind a firewall with NO internet access to the outside world apart to a specific client that run in a browser which can authenticate and access both of these servers at the same time.

The main goal is to share a larger file (video for example) between the 2 servers, basically pull it from the public one and upload it to the one behind the firewall.

I have a few possible solutions but I am still looking for something better as it has been a challenge to find more specific resources on the topic.

  1. Build a web client which prompts to download the file to the downloads folder, then have a another prompt (file input field) after its done for the client user to select it and upload it again to a different endpoint. – This is simple enough but the UX is kinda bad as it involves a person taking action to complete the process

  2. Create socket connections between server 1 and client (channel 1) and server 2 and client (channel 2). On server 1 split the file into parts and send each part as a separate message in channel 1 which can be immediately piped to the channel 2. The receiving system will piece the file together and store it. – I feel i am adding complexity here and there might be a simpler way to do it. Chunked HTTP requests come to mind but have no idea how to go about it or if it’s doable.

  3. Download the file as a blob from server 1 in the browser client then upload it to server 2. – Concern here is the file size considering the blob will be contained in memory as iOS and Android would need to be supported as clients.

Any advice on how to solve this better, or if i am missing something in those 3 options above is much appreciated!