Поделиться через


API загрузки файлов

API скачивания файлов позволяет пользователям скачивать данные из пользовательского визуального элемента в файл на своем устройстве хранения. Скачивание визуального элемента требует согласия пользователя и разрешения администратора, предоставленного в глобальном коммутаторе администратора. Этот параметр отличается от ограничений загрузки, применяемых в параметрах экспорта и совместного использования клиента вашей организации.

Снимок экрана: настройка администратора, позволяющая загружать пользовательские визуальные элементы.

Примечание.

API скачивания файлов имеет три метода:

  • exportVisualsContent доступен из API версии 4.5
  • status доступен из API версии 4.6.
  • exportVisualsContentExtended доступен из API версии 5.3.
  • Чтобы узнать, какая версия используется, проверка apiVersion в файле pbiviz.json.

Используйте API скачивания файлов для экспорта в файлы следующих типов:

  • .txt
  • .csv
  • json.
  • Tmplt
  • XML
  • PDF
  • XLSX

Перед началом загрузки появится окно с просьбой подтвердить, что визуальный элемент находится из надежного источника.

Снимок экрана: запрос на подтверждение загрузки только в том случае, если он находится из надежного источника.

Использование API скачивания файлов

Чтобы использовать API скачивания файлов, добавьте объявление в массив привилегий в визуальных возможностях.

API скачивания файлов имеет три метода:

Разница между двумя методами — возвращаемое значение.

Метод status

Метод состояния возвращает состояние API скачивания файлов:

  • PrivilegeStatus.DisabledBy Администратор: отключен параметр администратора клиента
  • PrivilegeStatus.NotDeclared: визуальный элемент не имеет объявления для локального хранилища в массиве привилегий
  • PrivilegeStatus.NotSupported: API не поддерживается. Дополнительные сведения см . в ограничениях .
  • PrivilegeStatus.Allowed: API поддерживается и разрешен.

Метод exportVisualsContent

Метод exportVisualsContent имеет четыре параметра:

  • содержимое: строка
  • имя файла: строка
  • fileType: string — при экспорте в файл fileType .pdf или .xlsx параметр должен бытьbase64
  • fileDescription: string

Этот метод возвращает обещание, которое будет разрешено для логического значения.

Метод exportVisualsContentExtended

Метод exportVisualsContentExtended также имеет четыре параметра:

  • содержимое: строка
  • имя файла: строка
  • fileType: string — при экспорте в файл fileType .pdf или .xlsx параметр должен бытьbase64
  • fileDescription: string

Этот метод возвращает обещание, которое будет разрешено с результатом типа ExportContentResultInfo , содержащего следующие параметры:

  • downloadCompleted — если скачивание завершено успешно.
  • имя файла — экспортируемая имя файла.

Пример: API скачивания файлов

Ниже приведен пример загрузки содержимого пользовательского визуального элемента в файл Excel и текстовый файл.

import IDownloadService = powerbi.extensibility.IDownloadService;
...

export class Visual implements IVisual {
    ...
    private downloadService: IDownloadService;
    ...

    constructor(options: VisualConstructorOptions) {
        this.downloadService = options.host.downloadService;
         ...

        const downloadBtn: HTMLElement = document.createElement("button");
        downloadBtn.onclick = () => {
            let contentXlsx: string = ...;//content in base64
            let contentTxt: string = ...;
            this.downloadService.exportVisualsContent(contentTxt, "mytxt.txt", "txt", "txt file").then((result) => {
                if (result) {
                    //do something
                }
            }).catch(() => {
                //handle error
            });

            this.downloadService.exportVisualsContent(contentXlsx, "myfile.xlsx", "base64", "xlsx file").then((result) => {
                if (result) {
                    //do something
                }
            }).catch(() => {
                //handle error
            });

            this.downloadService.exportVisualsContentExtended(contentXlsx, "myfile.xlsx", "base64", "xlsx file").then((result) => {
                if (result.downloadCompleted) {
                    //do something
                    console.log(result.fileName);
                }
            }).catch(() => {
                //handle error
            });
        };

        // if you are using API version > 4.6.0
        downloadBtn.onclick = async () => {
            try {
                const status: powerbi.PrivilegeStatus = await this.downloadService.exportStatus();
                if (status === powerbi.PrivilegeStatus.Allowed) {
                    const result = await this.downloadService.exportVisualsContent('aaaaa','a.txt', 'text/plain', 'aa');
                    // handle result
                } else {
                    // handle if the API is not allowed
                }

            } catch (err) {
                //handle error
            }
        }
    }
}

Рекомендации и ограничения

  • API поддерживается только в служба Power BI и Power BI Desktop
  • Размер скачаемого файла составляет 30 МБ.
  • Этот API является привилегированным API.