Árvore de páginas

A transferência de arquivos através do Gateway do Mingle pode ser realizada utilizando a biblioteca @totvs/mingle ou o acesso direto ao servidor conforme a documentação https://mingle.totvs.com.br/api/docs/#api-Gateway-gateway


Para envio e download de arquivos utilizando o Mingle Gateway o arquivo deve ser encodado para BASE64 ou FormData e conter no máximo o tamanho de 50 megabytes.

Atenção

Para o envio de arquivos encondados em BASE64, do aplicativo para o seu backend, deve-se utilizar o formato JSON.

Por exemplo: 

JSON
{"file":"9j/4AAQSkZJRgABAQAAAQABAAD/4gIoSUNDX1BST0ZJTEUAAQEAAAIYAAAAAAIQA..."}


Dessa forma é possível enviar arquivos PDF, ZIP, XLS, imagens, ...

Para converter o arquivo para BASE64  e enviá-lo como resposta a uma solicitação GET para download, pode-se utilizar o exemplo em NodeJS abaixo:

exemploEncode.js
 let options = { 
    root: path.join(__dirname),
 }; 

 let buff = fs.readFileSync('arquivo.tar.xz');
 let base64data = buff.toString('base64');

 res.setHeader("content-type", "application/octet-stream");
 res.setHeader('content-disposition', 'attachment; filename=arquivo.tar.xz');

 res.end(base64data, options);

OBS. Após o recebimento do arquivo o mesmo deve ser decodado para possível utilização.


Segue abaixo links das documentações de Encode e Decode do Protheus (ADVPL):

Encode64

Decode64


FormData 

O Mingle permite também o envio de arquivos para o backend no padrão FormData.

Neste exemplo abaixo, recebemos no aplicativo arquivos com qualquer tipo de extensões através do po-upload no HTML e o valor dele (ngModel) é repassado para uma função javascript onde será montado o POST:

upload_de_arquivos.html
<po-upload name="upload" [(ngModel)]="fileUpload"> </po-upload>

<ion-button (click)="sendFilesByMingle(fileUpload)">Direto</ion-button>

Exemplo enviando arquivos do aplicativo utilizando o método post da classe gateway da biblioteca @totvs/Mingle:

sendFilesByMingle.js
public sendFilesByMingle (file: any) {
   const formData: FormData = new FormData();

   formData.append('file', file[0].rawFile);

   const options = { body: formData };

   this.mingleService.gateway.post("api/upload", options).subscribe(res => {
     console.log("HTTP RESPONSE OK: ", res)
   }), error => {
     console.log("HTTP RESPONSE ERROR:", error);
   }

}

Exemplo de envio de arquivo direto para o servidor conforme documentação https://mingle.totvs.com.br/api/docs/#api-Gateway-gateway:

sendFiles.js
public sendFiles (file: any) {
   const formData: FormData = new FormData();

   formData.append('file', file[0].rawFile);

   const options = { body: formData };

   this.httpService.post("https://mingle.totvs.com.br/api/api/v1/gateway/:setId/back-end-method", options).subscribe(res => {
     console.log("HTTP RESPONSE OK: ", res)
   }), error => {
     console.log("HTTP RESPONSE ERROR:", error);
   }

}



  • Sem rótulos