Поделиться сообщением и изображением через WhatsApp (React Native) - PullRequest
0 голосов
/ 07 ноября 2019

Добрый день. Я пытаюсь поделиться изображением вместе с текстом, но оно не передается, во время обмена появляется только текст. Я сделал этот код на основе других тем. Изображение преобразуется в base64, но все еще не появляется. Примечание. URI - это изображение, хранящееся в базе данных Firebase.

onSharePress() {
       const fs = RNFetchBlob.fs;
       let imagePath = null;
       RNFetchBlob.config({
           fileCache: true
       })
           .fetch("GET", "https://i.kinja-img.com/gawker-media/image/upload/s--HqfzgkTd--/c_scale,f_auto,fl_progressive,q_80,w_800/wp2qinp6fu0d8guhex9v.jpg")
           .then(resp => {
               imagePath = resp.path();

               return resp.readFile("base64");
           })
           .then(async base64Data => {
               var base64Data = `data:image/png;base64,` + base64Data;
               // here's base64 encoded image
               console.log(base64Data);
               const shareOptions = {
                   title: 'Title',
                   message: 'Message to share', 
                   url: base64Data,
                   subject: 'Subject'
               };
           alert(base64Data);
               await Share.share(shareOptions);
               return fs.unlink(imagePath);
           });
   }

1 Ответ

0 голосов
/ 07 ноября 2019

Может быть, это поможет вам, самая важная часть здесь (и что помогает мне решить мою проблему) - encodeURI, следуйте за мной код:

import Share from 'react-native-share'
import RNFetchBlob from 'rn-fetch-blob'
//
const base64File = //base64 file
const pdf = "data:application/pdf;base64," + base64File
let filePath = '';
const path = RNFetchBlob.fs.dirs.DocumentDir + '/someFileName.pdf';
const configOptions = { fileCache: true, path };
let fullPath = await RNFetchBlob.config(configOptions).fetch('GET', encodeURI(fileUrl))
filePath = fullPath.path();
let options = {
    title: 'Share via'
    type: type,
    url: filePath // (Platform.OS === 'android' ? 'file://' + filePath)
};
Share.open(options)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...