> 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); }; ``` ---