Я хочу загрузить изображение с реактивного на mongoDB, используя пероJS - PullRequest
0 голосов
/ 11 мая 2019

Я использую feathersJS для работы с проектом приложения для электронной коммерции наact-native. Я не могу загрузить изображение в базу данных, я также создаю файл BLOB-объектов с помощью response-native-blob, но это не так. t работает, выдает ошибку FileReader.readAsArrayBuffer is not implemented. Я просто хочу загрузить изображение, а затем вернуть его, пожалуйста, помогите мне с реагировать родной.

https://github.com/feathersjs/feathers/issues/348

uploadImageFromDevice = () => {
    const options = {
      title: 'Select a Photo',
      cancelButtonTitle: 'Cancel',
      takePhotoButtonTitle: 'Take Photo…',
      chooseFromLibraryButtonTitle: 'Choose from Library…'
    };
    ImagePicker.showImagePicker(options, (response) => {
      console.log('Response = ', response);
      if (response.didCancel) {
        console.log('User cancelled image picker');
      } else if (response.error) {
        console.log('ImagePicker Error: ', response.error);
      } else if (response.customButton) {
        console.log('User tapped custom button: ', response.customButton);
      } else {
        { this.storeImageToFeathers(response, response.fileName); }
      }
    });
  }

storeImageToFeathers = (response, mime = ';BASE64') => new Promise((resolve, reject) => {
    const uri = response.uri;
    const uploadUri = Platform.OS === 'ios' ? uri.replace('file://', '') : uri;
    const name = new Date().toString();
    const imageRef = firebase.storage().ref('/photos/posts').child(name);
    fs.readFile(uploadUri, 'base64')
      .then(data => Blob.build(data, { type: `${mime};BASE64` }))
      .then((blob) => {
        console.log(blob);
        client.service('image-upload').create({
          uri: blob
        }).then((res) => console.log(res))
          .catch(err => console.log(err.message))
       })
  })

1 Ответ

0 голосов
/ 15 июля 2019

Чтобы загрузить файл в feathersjs, вы должны использовать многочастную форму.Вы должны установить модуль multer , который использует промежуточное программное обеспечение Express для получения загруженного файла.

Этот это хорошая статья для этого.

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

...