Местоположение Expo FileSystem.moveAsync невозможно переместить?

Я работаю над реагированием на собственное приложение с использованием expo API, приложение в основном делает снимок, затем приложение обрезает его с помощью ImageEditor.cropImage, наконец, копирует изображение из кеша в другое место. код:

  takePicture = async function() {
    if (this.camera) {
      this.camera.takePictureAsync().then(async (data) => {

        cropdata = {
          offset:{x:0, y:0},
          size:{width:100, height:100},
        };

        await ImageEditor.cropImage(
          data.uri, 
          cropdata,
          async (uri) => {
            FileSystem.moveAsync({
              from: uri,
              to: `${FileSystem.documentDirectory}photos/Photo_${this.state.photoId}.jpg`,
            }).then(() => {
              this.setState({
                photoId: this.state.photoId + 1,
              });
              Vibration.vibrate();
            });
          },
          (error) => {
            console.log(error);
          }
        );

      });
    }
  };

Но отображается следующая ошибка:

[Необработанное отклонение обещания: Ошибка: Местоположение 'file: ///data/user/0/host.exp.exponent/cache/ReactNative_cropped_image_574763720.jpg' не может быть перемещено.]

любая идея?


person adnanmuttaleb    schedule 17.01.2018    source источник


Ответы (1)


Модуль Expo FileSystem может копировать / перемещать / и т. Д. файлы, которые ранее были сохранены в области приложения (например, через ImagePicker или с помощью Asset.loadAsync). ImagerEditor - это основная функция React Native, которая сохраняет ваше изображение в файл, который находится за пределами Expo, поэтому FileSystem не может выполнять действия с этим файлом. подробнее об этом можно прочитать здесь:

https://forums.expo.io/t/where-does-camera-takepictureasync-save-photos/6475/7

поэтому вместо использования ImageEditor.cropImage() следует использовать expo ImageManipulator.

person adnanmuttaleb    schedule 24.01.2018