# Sending files between gateways

**URL:** <https://forum.inductiveautomation.com/t/sending-files-between-gateways/109329>\
**Category:** Ignition\
**Tags:** perspective, ignition81\
**Created:** [August 4, 2025, 3:51pm UTC](https://forum.inductiveautomation.com/t/sending-files-between-gateways/109329 "2025-08-04T15:51:45Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![bfreeman](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bfreeman/32/87436_2.png) [@bfreeman](https://forum.inductiveautomation.com/u/bfreeman)\
**Post date:** [August 4, 2025, 3:51pm UTC](https://forum.inductiveautomation.com/t/sending-files-between-gateways/109329/1 "2025-08-04T15:51:45Z")

</div>

Hi,

I'm trying to send a (zip) file (generated from a Perspective application) stored on an Ignition server to another Ignition server.

The gateways are connected through gateway network and are already exchanging information using messages handlers.

What would be the best way to achieve this?

Thanks

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [August 4, 2025, 4:09pm UTC](https://forum.inductiveautomation.com/t/sending-files-between-gateways/109329/2 "2025-08-04T16:09:55Z")

</div>

How large is the file?

You can use `system.util.sendRequest` for this, but I wouldn't recommend it for a payload of more than a megabyte or two because you're going to block the GAN websocket while that large payload is serialized.

We don't directly expose any primitives to allow larger payloads to be sent, but you could use Webdev or Phil's Blob Server module to allow a direct HTTP download "out of band" after a communication message via `sendRequest`.

That is, something like:

1. Server A: User creates file
2. Server A: Stores file on disk/database/etc
3. Server A: Broadcasts 'control' message to server B indicating download location w/ `system.util.sendMessage`
4. Server B: Message handler receives message and initiates an HTTP call via `system.util.sendRequest` to server A

---

<div class="post-metadata">

**Author:** ![bfreeman](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bfreeman/32/87436_2.png) [@bfreeman](https://forum.inductiveautomation.com/u/bfreeman)\
**Post date:** [August 6, 2025, 9:37am UTC](https://forum.inductiveautomation.com/t/sending-files-between-gateways/109329/3 "2025-08-06T09:37:19Z")

</div>

The file size will vary, since it's an archive of images and PDFs but we can assume that it can easily be more than a megabyte.

Thank you for the proposed solution. I will try to implement it

---

<div class="post-metadata">

**Author:** ![danielps1818](https://avatars.discourse-cdn.com/v4/letter/d/ecae2f/32.png) [@danielps1818](https://forum.inductiveautomation.com/u/danielps1818)\
**Post date:** [August 6, 2025, 9:56am UTC](https://forum.inductiveautomation.com/t/sending-files-between-gateways/109329/4 "2025-08-06T09:56:12Z")

</div>

You could also use the WebDev module if both gateways can't acces to the same disk locations. Is a bit worse in my opinion than what @paul-griffith suggested.

> **[Web Dev | Ignition User Manual](https://www.docs.inductiveautomation.com/docs/8.1/ignition-modules/web-dev)**
>
> The Web Dev module enables you to directly program against the web server inside the Ignition Gateway. Webpages can be built by hand using a combination of Python programming and static web resources such as images, CSS files, JavaScript files, and...

We had use this in the past to send data and worked great (_In our case were plain files that were reconstructed on destination_)

---

<div class="post-metadata">

**Author:** ![gregory.sachs](https://avatars.discourse-cdn.com/v4/letter/g/e47774/32.png) [@gregory.sachs](https://forum.inductiveautomation.com/u/gregory.sachs)\
**Post date:** [August 6, 2025, 7:21pm UTC](https://forum.inductiveautomation.com/t/sending-files-between-gateways/109329/5 "2025-08-06T19:21:33Z")

</div>

Another option would be to use ftp, which is pretty simple to script in python. Put filezilla on one or the other and just send it. Make sure you turn on binary mode, and depending on speed it would probably be good to do the actual ftp in a system.util.invokeAsynchronous to avoid blocking the original thread.
