RN iOS загружает обрезанные изображения, хранящиеся в ImageStore - PullRequest
0 голосов
/ 23 сентября 2018

REACT NATIVE - iOS

Изображения, обрезанные с помощью ImageEditor, помещаются в ImageStore с URL-адресом rct-image-store://0

По какой-то причине невозможно отправить файл на сервер сRNFetchBlob, используя этот URL:

const uploadProfileImage = (file, userId) => {


  const uploadTime = Date.now();


  return new Promise((resolve, reject) => {
    RNFetchBlob.fetch('POST', `${REMOTE_URL}/api/upload/profilephoto`, {
        'Content-Type' : 'multipart/form-data'
    }, [file].map((PATH_TO_THE_FILE, i) => {
      return { userId, uploadTime, name : 'profilePhoto', filename : `${userId}-${uploadTime}-profilephoto.jpg`, type:'image/jpg', data: file }
    }))
    .then((res) => {
      return resolve(res);
    })
    .catch((err) => {
      console.warn('ERROR',err)
      return reject(err);
    })
  });
}

Или сохраните файл в коллекцию по следующему пути:

const saveFile = (base64Data) => {
  const path = RNFetchBlob.fs.dirs.DocumentDir;

  var encodedData = base64.encode(base64Data);

  return new Promise((resolve, reject) => {
    RNFetchBlob.fs.writeFile(`${path}/images/profilepic.jpg`, RNFetchBlob.base64.encode(base64Data), 'base64')
      .then((res) => {
        console.warn('res', res);
        RNFetchBlob.fs.exists(`${path}/images/profilepic.jpg`)
        // files will an array contains filenames
        .then((exists) => {
            return resolve(`${path}/images/profilepic.jpg`);
        })
      })
      .catch((err) => {
        return reject(err);
      })
  })
};

Изображение не записано, все ещесуществующий метод говорит, что он существует.

Как загрузить изображения из RN ImageStore?

Нужно ли мне получить getBase64ForTag изображения из ImageStore и отправить base64данные вместо?

РЕДАКТИРОВАТЬ: мне удалось изменить размер изображения после обрезки и получить абсолютный путь с react-native-image-resizer, как предложено pritesh здесь: Как получить абсолютный путьrct-image-store: // 0

Есть альтернатива?

...