0
votes

Poste de formulaire avec Fichier Attachez les lancers Erreur de réseau / React Native + React Picker de l'image natif

J'utilise réacteur-natif-picker code> pour récupérer les détails de l'image et essayez de télécharger dans le serveur HTTPS Backend. La demande n'est pas réussie et elle jette une erreur réseau. Il n'a pas establé la connexion avec le serveur Backend. Le problème est avec formdata ​​code> que j'envoie. Pouvez-vous suggérer en-tête code> et d'autres informations, si je vous ai manqué.

  export const postImage = async state => {  

    let formData = new FormData();

    formData.append('image', {
      uri : state.photo.uri,
      type: state.photo.type,
      name : state.photo.fileName
    });


    const config = {
      headers: {
        'Content-Type': 'multipart/form-data',
        Accept: "application/x-www-form-urlencoded",
        'Accept': 'application/json'
      },
    };

    try {
    return $http.post('/image/save', formData, config)
    .then(response => response)
    .catch(error => error)
    } catch(error) {
        console.log(error)
    }
  }


0 commentaires

4 Réponses :


1
votes

Il y a un problème avec Flipper, la mise à niveau à 0,39,0 et ci-dessus fonctionne

Ce problème est en cours de suivi ici: https://github.com/facebook/react-native/issues/28551 p>

correction: https://github.com/facebook/flipper/issues/993#issuecomment-619823916 p>

This should be fixed in version 0.39.0. To upgrade, edit android > gradle.properties

# Version of flipper SDK to use with React Native
FLIPPER_VERSION=0.39.0  // edit this manually


0 commentaires

0
votes

Ce problème m'a pris plus de 5 heures pour résoudre. J'étais sur le point d'abandonner quand j'ai finalement pu résoudre le problème.

La question que j'étais confrontée, qui est proche de ce que vous mentionnez est que je reçois NetworkError lors de l'utilisation d'Expo-Image-Picker et d'essayer de télécharger Le fichier utilisant axios . Cela fonctionnait parfaitement dans IOS mais ne travaille pas dans Android.

C'est comme ça que j'ai résolu le problème.

Il existe deux problèmes indépendants d'action ici. Disons que nous obtenons imageuri à partir du sélecteur d'image, nous utiliserons ces lignes de code suivantes pour télécharger depuis le frontage. xxx

Le premier numéro est avec le imageuri lui-même. Si disons le chemin de la photo est / utilisateur /.../ chemin / to / fichier.jpg . Ensuite, le sélecteur de fichier dans Android donnerait à imageURI comme fichier fichier: / user /.../ voie de chemin / to / fichier.jpg alors que le sélecteur de fichier dans iOS donnerait imageURI valeur comme fichier: ///user/.../path/to/file.jpg .

La solution pour le premier numéro est utiliser fichier: // au lieu de fichier: dans le formdata dans Android.

la seconde Le problème est que nous n'utilisons pas le type de mime approprié. Cela fonctionne bien sur iOS mais pas sur Android. Ce qui rend cela pire, c'est que le package de file-sélecteur donne le type de fichier comme "image" et ne donne pas de type mime approprié.

La solution consiste à utiliser un type de mime approprié dans le < Code> formdata dans le champ type . EX: Type MIME pour .jpg fichier serait image / jpeg et pour .png fichier serait image / png . Nous n'avons pas à le faire manuellement. Au lieu de cela, Vous pouvez utiliser un package NPM très célèbre appelé MIME .

La solution de travail finale est la suivante: xxx


0 commentaires

0
votes

Ceci est un problème avec Flipper.UPGrade la version Flipper dans Gradle.properties à 0,43,0+ et il sera fixé


0 commentaires

2
votes

Assurez-vous que le type MIME correspond au fichier que vous téléchargez. Pour moi, c'était le problème.


0 commentaires