GetFiles() в react native с мутациями relayjs

#react-native #relayjs

#react-native #relayjs

Вопрос:

Мне нужно загрузить несколько файлов из приложения react native с мутацией relayjs. Массив файлов выглядит следующим образом:

[
{uri: 'file:///path/to/file.jpg', mime: 'image/jpg'},
{uri: 'file:///path/to/file2.jpg', mime: 'image/jpg'},
]

Я нашел функцию GetFiles () для мутаций, но я не понимаю, какой формат данных она должна возвращать?

Комментарии:

1. GetFiles получает объект {‘file1’: file1, ‘file2’: file2}, где file1 имеет тип файла. проверьте документы Relay: facebook.github.io/relay/docs /…

2. Какой тип файла в react-native?

3. developer.mozilla.org/en-US/docs/Web/API/File

4. я думаю, вам нужно получить файл из uri. Я углублюсь в это в ближайшие дни

5. Кто-то решил проблему?

Ответ №1:

Вот как я это решил:

Я использовал этот пакет https://github.com/jeanpan/react-native-camera-roll-picker чтобы получить изображение с фотопленки:

Вы можете использовать его для тестирования, добавьте это в свой рендеринг:

 <CameraRollPicker
          callback={this.getSelectedImage}
          imagesPerRow={4}
          imageMargin={1}
          maximum={1}
        />
  

Это моя реализация getSelectedImage, я просто отправляю одно изображение, но вы можете отправлять несколько изображений, files — это объект, значением которого является изображение.

 getSelectedImage = (images) => {
    const image = images[0];

    const files = {
      [image.filename]: {
        uri: image.uri,
        name: image.filename,
      },
    };

    const mutation = new UploadUserProfileMutation({
      files,
    });

    this.props.relay.commitUpdate(mutation, callbacks);
  };
  

в вашей мутации добавьте метод getFiles :

 export default class UploadUserProfileMutation extends Relay.Mutation {
...
  getFiles() {
    return this.props.files;
  }
...
}
  

Вы должны завершить мутацию как обычную мутацию

Комментарии:

1. Хорошо, мой getFiles() выглядит так getFiles() { return { files: this.props.photo }; } , где this.props.photo = { photo0:{ uri:'file:///storage/emulated/0/DCIM/Camera/IMG_20161015_054936.jpg', name: 'IMG_20161015_054936.jpg' } } и у меня ошибка «TypeError: сбой сетевого запроса», и мой сервер не видит никаких запросов. Но когда я удаляю функцию GetFiles из своей мутации, все работает нормально. Что я делаю не так?(

2. вам нужно настроить мультер на вашем сервере для приема файлов