...
The bulk file download via the web client is a new feature that will allow a user users to browse for files they wish to download, add the files to a user's download list select files, review/refine the file selection, and then download all of the entire list of files as a single zip file. The user can add files to their download list using the following operationsworkflow consists of file basic phases: file selection, selection review, download, download review. While a typical workflow flow might involve the user moving through the all of the phase in order, the user is free to move between phases at will.
File selection
In this phase the user will be able to select files from various source:
- Add all files from a folder. Note: This operation is not recursive, so files within sub-folders will not be added.
- Add a single file from a folder.
- Add all of the files listed in a view query. We do not plan to support adding individual files from a view, instead the user is expected to refine their query to sub-select files from views. Note: This operation will add all files from the view query, not just the single page of files shown in the UI.
...
Selection review
All files selected in the file selection phase will be added to a user's download list. In the selection review phase a user will be able to view and refine their manage their download list. The download list prior to downloading the files. Download list refinement operation include the follow:
...
is similar to an online shopping cart. Each user will have a single download list that is persistent and private.
The download list will include the following information about each file:
- Link to the original file
- File size
- Any unmet access restrictions on the file
- Is the file downloadable via bulk download? File sources such as SFTP and external links cannot be downloaded via the bulk download feature.
For each file in the download list the user will have the option to perform the following actions:
- Request access for unmet access restrictions
- Remove the file from the list.
The user will have the option to perform the following actions on the entire download list:
- Clear the list
- Download the list
Download
In the download phase the user will provide a name for the zip file and will be presented with information about the number of files to be included in the zip and the total size of the download.
In the download phase the user will have the option to start the download or cancel.
Download Review
When a user starts a file download, they will enter the last phase: download review. In this phase the user will be able to monitor the download progress. After the requested zip file is prepared, the user will then be able to download the zip file to their machine.
Limitations
Managing file selection across a paginated list of results creates an awkward user experience. Therefore, the entire download list must be presented to the user without pagination (scrollbars are allowed). This means there must be a limit on the number of files allowed in the download list. The download list must be small enough to be fetched as a single web-service request. A download list will have a limit of 100 files.
...
To support adding all of the files in a folder (non-recursive) (use case 1a) we will need to return the total number of files in a folder and the total size of all files in the folder from POST/entity/children. The proposal is to add a 'partMask' (similar to QueryBundleRequest) with 0x01=count and 0x02=totalFileSizeMB.
Download
...
Transaction
A userWhen a user chooses to to start the download process the following operations will occur in a transaction:
- User's download list
...
...
- will be locked.
- A download delivery will be created that includes all of the files from a user's download list excluding unmet access restrictions and non-downloadable files.
- An asynchronous download request job will be started for the download delivery created in step 2.
- All files in the download delivery will be removed from the user's download list.
- Releases the lock on on the users's download list.
If any errors occur during this transaction all changes will be rolled back. The user will be blocked from making changes to their download list during this transaction.