Aracılığıyla paylaş


Dosya indirme API'si

Dosya indirme API'si, kullanıcıların özel bir görseldeki verileri depolama cihazlarında bir dosyaya indirmesine olanak tanır. Görselin indirilmesi için yönetici genel anahtarında kullanıcı onayı ve yönetici izninin sağlanması gerekir. Bu ayar, kuruluşunuzun dışarı aktarma ve paylaşım kiracı ayarlarında uygulanan indirme kısıtlamalarından ayrıdır ve bunlardan etkilenmez.

Özel görsel indirmelerini etkinleştiren yönetici ayarının ekran görüntüsü.

Not

Dosya indirme API'sinin üç yöntemi vardır:

Dosya indirme API'sini kullanarak aşağıdaki türlerdeki dosyaları dışarı aktarın:

  • .txt
  • .Csv
  • .Json
  • .tmplt
  • .xml
  • .pdf
  • .xlsx

İndirme başlamadan önce, görselin güvenilir bir kaynaktan geldiğini onaylamayı isteyen bir pencere görüntülenir.

yalnızca güvenilir bir kaynaktan geliyorsa indirmeyi onaylamayı isteyen ekran görüntüsü.

Dosya indirme API'sini kullanma

Dosya indirme API'sini kullanmak için görsel özelliklerdeki privileges dizisine bir bildirim ekleyin.

Dosya indirme API'sinin üç yöntemi vardır:

İki yöntem arasındaki fark, dönüş değeridir.

status yöntemi

status yöntemi, dosya indirme API'sinin durumunu döndürür:

  • PrivilegeStatus.DisabledBy Yönetici: Kiracı yönetici anahtarı kapalı
  • PrivilegeStatus.NotDeclared: Görselde privileges dizisindeki yerel depolama için bildirim yok
  • PrivilegeStatus.NotSupported: API desteklenmez. Daha fazla bilgi için sınırlamalara bakın.
  • PrivilegeStatus.Allowed: API desteklenir ve izin verilir.

exportVisualsContent yöntemi

yöntemi dört exportVisualsContent parametreye sahiptir:

  • content: string
  • filename: string
  • fileType: string - .pdf veya .xlsx bir dosyaya dışarı aktarırken parametresinin fileTypebase64
  • fileDescription: dize

Bu yöntem, Boole değeri için çözümlenecek bir söz döndürür.

exportVisualsContentExtended yöntemi

Yöntemin exportVisualsContentExtended dört parametresi de vardır:

  • content: string
  • filename: string
  • fileType: string - .pdf veya .xlsx bir dosyaya dışarı aktarırken parametresinin fileTypebase64
  • fileDescription: dize

Bu yöntem, aşağıdaki parametreleri içeren bir tür ExportContentResultInfo sonucuyla çözümlenecek bir promise döndürür:

  • downloadCompleted – indirme işlemi başarıyla tamamlandıysa.
  • filename – dışarı aktarılan dosya adı.

Örnek: dosya indirme API'si

Özel bir görselin içeriğini excel dosyasına ve metin dosyasına indirme örneği aşağıda verilmiştır.

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
            }
        }
    }
}

Dikkat edilecekler ve sınırlamalar

  • API yalnızca Power BI hizmeti ve Power BI masaüstünde desteklenir
  • İndirilen bir dosyanın boyut sınırı 30 MB'tır.
  • Bu API ayrıcalıklı bir API'dir.