Вы используете плагин nativescript-imagepicker, который возвращает ImageAsset
. Как уже упоминалось в комментариях, пути, которые вы получаете, не являются прямыми ссылками на изображения. Таким образом, чтобы отправить Base64 представление фактического изображения, вам нужно его создать, а затем декодировать. Вот как это сделать на Android.
selection.forEach(element => {
let asset: ImageAsset = element;
// if Android
asset.getImageAsync((bitmap) => {
console.log(`android.graphics.Bitmap: ${bitmap}`);
let byteArrayOutputStream = new java.io.ByteArrayOutputStream();
bitmap.compress(android.graphics.Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
let byteArray = byteArrayOutputStream.toByteArray();
console.log(`byteArray: ${byteArray}`); // BASE64
});
});
Обратите внимание, что у меня есть доступ к нативному Android API и пространству имен Java. В TypeScript вам потребуется явная типизация для всех объявленных переменных, поэтому вам необходимо явно объявить о необходимости объявления переменных java
и android
.
// somewhere at the beginning of the file
declare let android: any; // or use tns-platform-declarations
declare let java: any;
Для API Android и iOS вы также можете использовать t ns-platform-декларации (это даже лучший и рекомендуемый подход), но вам все равно нужно объявить переменную java
, как показано выше