Пустая строка base64 - PullRequest
       11

Пустая строка base64

0 голосов
/ 29 января 2020

У меня проблема с плагином Instagram и плагином base64 от Cordova.

Я пытаюсь сделать следующее: хочу поделиться изображением через Instagram (желательно Story).

У меня есть абсолютный путь, подобный этому: '/assets/images/storyTemplates/diary.png'

И теперь, в документации сказано, что все, что мне нужно сделать, это что-то вроде этого:

this.base64.encodeFile(path).then((base64File: string) => {
   console.log('nativepath: ' + path);
   console.log('base64: ' + base64File);
   if (this.instagram.isInstalled()) {
      this.instagram.share('data:image/png;base64,file://' + base64File, 'caption').then(data => {
            if (data) {
              console.log(data);
            }
          });
        }
      });

, но console.log (base64File) пуст ... Вывод ошибок:

nativepath: /assets/images/storyTemplates/diary.png
base64: 
copying caption:  caption

vendor.js:45196 ERROR Error: Uncaught (in promise): Share Cancelled
    at resolvePromise (polyfills.js:4086)
    at resolvePromise (polyfills.js:4043)
    at polyfills.js:4147
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (polyfills.js:3657)
    at Object.onInvokeTask (vendor.js:64580)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (polyfills.js:3656)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (polyfills.js:3429)
    at drainMicroTaskQueue (polyfills.js:3835)

Нужно ли импортировать некоторые XML в файл конфигурации? или в AndroidManifest?

Я сейчас действительно беспомощен: D

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

хорошо, вау. Я ненавижу свою жизнь. Я давно отлаживал этот код, и похоже, что this.file - это строка. Хотя я объявил его как private file: File; В этом компоненте в ionViewWillEnter я получаю navParam под названием «файл». И console.log(this.file) явно распечатывает то, что в navParam называется «file».

Пришлось переименовать navParam, и это работает ... Не знаю, имеет ли это смысл: D

0 голосов
/ 30 января 2020

Хорошо, так что я нашел решение. Приложение, установленное на устройстве, не может получить доступ к папке ресурсов, где хранится мое изображение.

Мне пришлось скопировать файл в каталог данных приложения, чтобы использовать его в дальнейшем.

код выглядит следующим образом:

private basedirectory = 'www/assets/images/storyTemplates/';
socialShare(filename){
 this.file.copyFile(this.file.applicationDirectory + this.basedirectory, filename, this.file.dataDirectory, filename).then(() => {
      this.file.checkFile(this.file.dataDirectory, filename).then(result => {
        this.file.readAsDataURL(this.file.dataDirectory, filename).then(base64file => {
          console.log('encoded: ' + base64file);
          if (this.instagram.isInstalled()) {
            this.instagram.share('data:image/png;base64,file:///' + base64file, 'pferdesporthaus_loesdau').then(instagramData => {
              if (instagramData) {
                console.log(instagramData);
              }
            });
          }
        });
      }, (error) => {
        console.log('checkFile Error');
        console.log(error);
      });
    }).catch(err => {
      console.log('copying error');
      console.log(err);
    });
}

Надеюсь Вы получите ответ, я ужасен при объяснении: D

...