Skip to content

Overview

FileSlide Zip-as-a-Service is a cloud gateway that zips files from your servers and streams them directly to your clients. Because downloading multiple files at once is not supported by HTTP, zipping files together into one single download is the next best thing.

Implementing reliable file zipping at scale is not as simple as it sounds. Often the first question is whether to either create a temporary zip file on disk or stream on-the-fly. Creating a temporary file leads to more questions such as how long the user should wait while the file is zipped, if and how they should be notified when it's ready and how long to keep the temporary file. Temporary files also raise concerns over retention and compliance policies. Streaming is the better option but it is tricky - CRC checksums are needed to assemble the stream and servers are required to support long-running responses.

We're getting pretty good at this and we think we can zip your downloads faster, cheaper and more reliably than any in-house solution. If our service does not meet your requirements please email us at support@fileslide.com and we'll be happy to work with you.

Example

sequenceDiagram %%{init:{'sequence':{ 'mirrorActors': false, 'actorFontFamily': 'Roboto,Helvetica,Arial,sans-serif', 'messageFontFamily': 'Roboto,Helvetica,Arial,sans-serif', 'noteFontFamily': 'Roboto,Helvetica,Arial,sans-serif' }}}%% participant Company Client participant FileSlide participant Company Server A participant Company Server B Company Client->>FileSlide: POST list of file URIs Note right of Company Client: https://...file1.pdf<br/>https://...file2.mov FileSlide->>Company Server A: GET file1.pdf FileSlide->>Company Server B: GET file2.mov Company Server A-->>FileSlide: zip(file1.pdf, ...) Company Server B-->>FileSlide: zip(file2.mov, ...) FileSlide-->>Company Client: download.zip

In this example, imagine you are a Data Provider (Company) and you have file browser app similar to Dropbox™ or Google Drive™ where your end user (Client) selects checkboxes next to file1.pdf and file2.mov and then clicks the button Download Zip of 2 Files.

1. Add URI patterns to our allow-list

Firstly, the Provider signs-in to FileSlide and registers the URI prefixes (Company Servers) for their data. This step is for accounting purposes so that requests matching this prefix are allowed and allocated to the owner's account.

URI Prefixes:
https://mycompany.com/private/data/*
https://backup.mycompany.com/private/2020/*

2. Your Client requests multiple files

The Provider's file browser app constructs a request from the Client to the FileSlide streaming server similar to the form below (JSON format also supported). The Provider is responsible for implementing authentication and authorization.

<form action="https://stream.fileslide.io/download" method="post">
  <input type="hidden" name="fs_file_name" value="demo_download.zip" />
  <!-- For authentication, either forward all headers sent to FileSlide on to mycompany.com -->
  <input type="hidden" name="fs_forward_all_headers" value="true" />
  <!-- Or tell FileSlide to add a specific header -->
  <input type="hidden" name="fs_add_header-Authorization" value="ABC123 />
  <!-- Or use presigned URLs -->
  <input type="hidden" name="fs_uri_list[]" value="https://mycompany.com/private/data/file1.pdf?presigned_key=ABC123 />
  <input type="hidden" name="fs_uri_list[]" value="https://backup.mycompany.com/private/2020/file2.mov?presigned_key=ABC123 />
  <input type="submit" value="Download Zip of 2 Files"/>
</form>

3. We fetch the files and stream a zip download to your Client

FileSlide checks all the URIs in the fs_uri_list parameter against the allow-list and within a few seconds the Client is prompted to save demo_download.zip. FileSlide then fetches all the files in fs_uri_list, assembles the zip file and streams it directly to the Client.

4. View analytics

The Provider signs-in to FileSlide to customize queries and charts to report analytics.

Please see the API for features and details