Dataset converter base64 to multpart/formdata

@rafaelrubin , de jeito simples: esses métodos “padrões” do Fluig não fazem requisições multipart/form-data. Eles servem basicamente só pra trocar informações json.

Qualquer coisa que fuja desse padrão de enviar “texto”/json precisa ser feita manualmente.

O jeito mais fácil é ter o arquivo localmente no Fluig, aí você já o pega e envia.

Se você só tem o Base64 aí terá que pesquisar como converter ele pra um formato que o form-data receba. Não parei pra ver se do jeito que fez a conversão funciona, pois sempre que fiz algum envio eu tinha o arquivo salvo no volume do Fluig.

Segue um exemplo no qual chamo um endpoint multipart/form-data com autenticação Bearer Token.


/**
 * Efetua a requisição POST ao Gescon enviando o arquivo
 *
 * @param {string} codigoContrato
 * @param {number} idComprometimento
 * @param {number} tipoArquivo
 * @param {string} descritivo
 * @param {com.fluig.sdk.api.document.DocumentVO} arquivo
 * @returns {boolean}
 * @throws {string}
 */
function sendAttachmentToGescon(codigoContrato, idComprometimento, tipoArquivo, descritivo, arquivo) {
    var gesconConfig = getGesconRestConfig();

    var filePath = fluigAPI.getTenantService().getTenantData(["dirDefault"]).get("dirDefault")
        + java.io.File.separator
        + "public"
        + java.io.File.separator
        + arquivo.getDocumentId()
        + java.io.File.separator
        + arquivo.getVersion()
        + java.io.File.separator
        + arquivo.getPhisicalFile()
    ;

    var entityBuilder = org.apache.http.entity.mime.MultipartEntityBuilder.create();
    entityBuilder.setMode(org.apache.http.entity.mime.HttpMultipartMode.BROWSER_COMPATIBLE);

    entityBuilder.addTextBody("idComprometimento", idComprometimento);
    entityBuilder.addTextBody("tipoId", tipoArquivo);
    entityBuilder.addTextBody("descritivo", descritivo, org.apache.http.entity.ContentType.create("text/plain", "UTF-8"));
    entityBuilder.addBinaryBody(
        "arquivo",
        new java.io.File(filePath),
        org.apache.http.entity.ContentType.DEFAULT_BINARY,
        arquivo.getPhisicalFile()
    );

    var httpPost = new org.apache.http.client.methods.HttpPost(
        gesconConfig.domain
        + "/contratos/"
        + codigoContrato
        + "/comprometimentos/"
        + idComprometimento
        + "/anexos"
    );
    httpPost.setHeader("Authorization", gesconConfig.token);
    httpPost.setEntity(entityBuilder.build());

    var httpClient = org.apache.http.impl.client.HttpClients.createDefault();
    var response = JSON.parse(org.apache.http.util.EntityUtils.toString(httpClient.execute(httpPost).getEntity()));
    httpClient.close();

    return response.success == true && response.data == "OK";
}

1 curtida