> Portal Navigation:
>
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt
# GenerateFolderDownloadUrl
# Package: mediaManager
# Namespace: FoldersService
# Method link: https://dev.wix.com/docs/api-reference/assets/media/media-manager/folders/generate-folder-download-url.md
## Permission Scopes:
Manage Media Manager: SCOPE.DC-MEDIA.MANAGE-MEDIAMANAGER
## Introduction
Generates a URL for downloading a compressed file containing a specific folder in the Media Manager.
The compressed file can contain sub-folders, and up to 1000 files.
---
## REST API
### Schema
```
Method: generateFolderDownloadUrl
Description: Generates a URL for downloading a compressed file containing a specific folder in the Media Manager.
The compressed file can contain sub-folders, and up to 1000 files.
URL: https://www.wixapis.com/site-media/v1/folders/{folderId}/generate-download-url
Method: POST
Return type: GenerateFolderDownloadUrlResponse
- name: downloadUrl | type: string | description: URL for downloading a specific folder in the Media Manager.
```
### Examples
### Generate a URL for downloading a zip file containing the specified folder's content
```curl
curl -X POST \
'https://www.wixapis.com/site-media/v1/folders/0c237d681c214835a0b6817a83460281/generate-download-url' \
-H 'Authorization: '
-H 'Content-Type: application/json' \
```
---
## JavaScript SDK
### Schema
```
Method: wixClientAdmin.mediaManager.FoldersService.generateFolderDownloadUrl(folderId)
Description: Generates a URL for downloading a compressed file containing a specific folder in the Media Manager.
The compressed file can contain sub-folders, and up to 1000 files.
# Note: If the parameter `a.b` is listed under required parameters, `b` is only required if `a` is also present.
Required parameters: folderId
Method parameters:
param name: folderId | type: string | description: Folder GUID. | required: true
Return type: PROMISE
- name: downloadUrl | type: string | description: URL for downloading a specific folder in the Media Manager.
```
### Examples
### Generate a folder download url for a chosen folder (with $w)
This code is an example of a page on which a visitor chooses a folder from a dropdown list, and then receives a folder download url for that folder.
```javascript
/*********************************************************
* Backend code - generate-folder-download-url.web.js/ts *
********************************************************/
import { Permissions, webMethod } from '@wix/web-methods';
import { folders } from '@wix/media';
import { auth } from '@wix/essentials';
export const listFolders = webMethod(Permissions.Anyone, async () => {
try {
const elevatedListFolders = auth.elevate(folders.listFolders)
const foldersList = await elevatedListFolders();
return foldersList;
} catch (error) {
console.error(error);
}
});
export const generateDownloadUrl = webMethod(Permissions.Anyone, async (folderId) => {
try {
const elevatedGenerateFolderDownloadUrl = auth.elevate(folders.generateFolderDownloadUrl);
const result = await elevatedGenerateFolderDownloadUrl(folderId);
const folderDownloadUrl = result.downloadUrl;
return folderDownloadUrl;
} catch (error) {
console.error(error);
}
});
/*************
* Page code *
************/
import { generateDownloadUrl, listFolders } from 'backend/generate-folder-download-url.web';
$w.onReady(async () => {
await populateFoldersDropdown();
$w('#downloadFolder').onClick(async () => {
const folderId = $w('foldersDropdown').value;
const downloadUrl = await generateDownloadUrl(folderId);
$w('#downloadFolderBtn').link = downloadUrl;
$w('#downloadingFolderMsg').show();
});
});
async function populateFoldersDropdown() {
const folderList = await listFolders();
const dropdownOptions = folderList.folders.map((folder) => {
return {
label: folder.displayName,
value: folder._id
};
});
$w('#foldersDropdown').options = dropdownOptions;
};
```
### Generate a folder download url (with elevated permissions)
```javascript
import { folders } from '@wix/media';
import { auth } from '@wix/essentials';
const elevatedGenerateFolderDownloadUrl = auth.elevate(folders.generateFolderDownloadUrl);
async function generateFolderDownloadUrl(folderId) {
try {
const result = await elevatedGenerateFolderDownloadUrl(folderId);
const folderDownloadUrl = result.downloadUrl;
return folderDownloadUrl;
} catch (error) {
console.error(error);
// Handle the error
}
}
/* Promise resolves to:
* {
* "downloadUrl": "https://archive.wixmp.com/archive/wix/b367fe21877e4ef589cde5352a3a04af"
* }
*/
```
### Generate a folder download url
```javascript
import { folders } from '@wix/media';
async function generateFolderDownloadUrl(folderId) {
try {
const result = await folders.generateFolderDownloadUrl(folderId);
const folderDownloadUrl = result.downloadUrl;
return folderDownloadUrl;
} catch (error) {
console.error(error);
// Handle the error
}
}
/* Promise resolves to:
* {
* "downloadUrl": "https://archive.wixmp.com/archive/wix/b367fe21877e4ef589cde5352a3a04af"
* }
*/
```
### generateFolderDownloadUrl (self-hosted)
Self-hosted SDK calls require you to [create a client](https://dev.wix.com/docs/sdk/articles/work-with-the-sdk/about-the-wix-client.md).
```javascript
import { createClient } from '@wix/sdk';
import { folders } from '@wix/media';
// Import the auth strategy for the relevant access type
// Import the relevant host module if needed
const myWixClient = createClient ({
modules: { folders },
// Include the auth strategy and host as relevant
});
async function generateFolderDownloadUrl(folderId) {
const response = await myWixClient.folders.generateFolderDownloadUrl(folderId);
};
```
---