API de download de arquivos
A API de download de arquivos permite que os usuários baixem dados de um visual personalizado para um arquivo em seu dispositivo de armazenamento. O download de um visual requer o consentimento do usuário e a permissão de administrador fornecida na opção global de administrador. Essa configuração é separada e não é afetada pelas restrições de download aplicadas nas configurações de locatário de exportação e compartilhamento da sua organização.
Nota
A API de download de arquivos tem três métodos:
exportVisualsContent
está disponível a partir da API versão 4.5status
está disponível a partir da API versão 4.6.exportVisualsContentExtended
está disponível a partir da API versão 5.3.- Para saber qual versão você está usando, verifique a
apiVersion
no arquivo pbiviz.json .
Use a API de download de arquivos para exportar para arquivos dos seguintes tipos:
- .txt
- .csv
- .json
- .tmplt
- .xml
- .xlsx
Antes do download começar, uma janela aparece pedindo para confirmar se o visual é de uma fonte confiável.
Como usar a API de download de arquivos
Para usar a API de download de arquivo, adicione uma declaração à matriz de privilégios em recursos visuais.
A API de download de arquivos tem três métodos:
- status: disponível na API versão 4.6
exportVisualsContent
: disponível a partir da API versão 4.5exportVisualsContentExtended
: disponível a partir da API versão 5.3.
A diferença entre os dois métodos é o valor de retorno.
O status
método
O método status retorna o status da API de download de arquivo:
- PrivilegeStatus.DisabledByAdmin: a opção de administrador do locatário está desativada
- PrivilegeStatus.NotDeclared: o visual não tem nenhuma declaração para o armazenamento local na matriz de privilégios
- PrivilegeStatus.NotSupported: a API não é suportada. Consulte as limitações para obter mais informações.
- PrivilegeStatus.Allowed: a API é suportada e permitida.
O exportVisualsContent
método
O exportVisualsContent
método tem quatro parâmetros:
- conteúdo: string
- nome do arquivo: string
- fileType: string - Ao exportar para um arquivo .pdf ou .xlsx , o
fileType
parâmetro deve serbase64
- fileDescrição: string
Esse método retorna uma promessa que será resolvida para um valor booleano.
O exportVisualsContentExtended
método
O exportVisualsContentExtended
método também tem quatro parâmetros:
- conteúdo: string
- nome do arquivo: string
- fileType: string - Ao exportar para um arquivo .pdf ou .xlsx , o
fileType
parâmetro deve serbase64
- fileDescrição: string
Esse método retorna uma promessa, que será resolvida com um resultado do tipo ExportContentResultInfo
que contém os seguintes parâmetros:
- downloadCompleted – se o download foi concluído com sucesso.
- Nome do arquivo – O nome do arquivo exportado.
Exemplo: API de download de arquivos
Aqui está um exemplo de como baixar o conteúdo de um visual personalizado em um arquivo do Excel e um arquivo de texto.
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
}
}
}
}
Considerações e limitações
- A API é suportada apenas no serviço do Power BI e no Power BI Desktop
- O limite de tamanho para um ficheiro transferido é de 30 MB.
- Esta API é uma API privilegiada.