Básicamente, debido a la seguridad, necesito convertir la imagen (de la URL) a base64.
Hasta ahora tengo dos funciones. Una función es convertir la imagen de la url a Base64 y la otra es mapear sobre la base de datos y reemplazar la url predeterminada al formato base64. Echo de menos la última pieza del rompecabezas, cómo usar el valor de retorno de la primera función en la segunda: quiero reemplazar 'prueba' en la segunda función con el resultado de la conversión de url a base64.
public async convertUrlToBase64(): Promise<any> { const request = require('request').defaults({ encoding: null }); await request.get( 'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Ray_and_Maria_Stata_Center_%28MIT%29.JPG/2560px-Ray_and_Maria_Stata_Center_%28MIT%29.JPG', function ( error: any, response: { statusCode: number; headers: { [x: string]: string } }, body: ArrayBuffer | SharedArrayBuffer, ) { return 'data:' + response.headers['content-type'] + ';base64,' + Buffer.from(body).toString('base64'); }, ); } public mapUriToBase64(note: any): any { return { ...note, images: note.images.map((image: File) => { return { ...image, uri: 'test', }; }), }; } }
Básicamente, debe envolverlo con la Promesa para obtener el valor devuelto de su llamada.
public convertUrlToBase64(): any { const request = require('request').defaults({ encoding: null }); return new Promise(function (resolve, reject) { request.get( 'https://upload.wikimedia.org/wikipedia/commons/thumb/e/ea/Ray_and_Maria_Stata_Center_%28MIT%29.JPG/2560px-Ray_and_Maria_Stata_Center_%28MIT%29.JPG', function ( error: any, response: { statusCode: number; headers: { [x: string]: string } }, body: ArrayBuffer | SharedArrayBuffer, ) { const data = 'data:' + response.headers['content-type'] + ';base64,' + Buffer.from(body).toString('base64'); resolve(data); }, ); }); }