1
votes

Le téléchargement de photos sur React Native Android produit une erreur de type Erreur réseau

J'exécute un téléchargement de photos à l'aide de l'API fetch et je continue de recevoir Type Error Network Request Error . Je reçois la même erreur sur l'émulateur et un appareil. J'utilise react-native-image-crop-picker comme source pour les données de téléchargement de photos. Des pensées?

const handlePhotoUpload =  async (image: any, token: string) => {

      const { path, filename, mime } = image;

      const uri = path.replace("file://", "")
      const file = {
        uri,            
        type: mime,           
        name: filename             
      };

      const body = new FormData()
      body.append('file', file)

      const config = {
        method: 'POST', 
        headers: { 'Authorization': 'Bearer ' + token },
        body
      };

      return await fetch(`${<API URL>}/user/photo`, config)

}


3 commentaires

Vérifiez votre connexion Internet et si l'URL du serveur est accessible à partir de l'appareil. Joindre également une trace de pile complète de l'erreur.


Ce qui n'a pas de sens, c'est le fait que j'utilise la même URL de serveur pour d'autres appels d'API.


Qu'est-ce que ? Avez-vous ces variables?


4 Réponses :


0
votes

Si la manière dont vous l'envoyez est Android, la manière est incorrecte.

L'URI correcte est:

uri: Platform.OS === "android" ? path : path.replace("file://", "")


2 commentaires

J'ai supprimé le fichier: /// mais j'ai eu une erreur réseau


@KhaledBoussoffara Les erreurs de réseau sont différentes des chemins.



4
votes

J'ai rencontré le même problème, cela se produit sous Android, mais fonctionne bien sous IOS. je devinez ce problème concernant Flipper Network.

Pendant un moment, j'ai commenté initializeFlipper (ceci, getReactNativeHost (). getReactInstanceManager ())

dans ce fichier /android/app/src/main/java/com/{your_project}/MainApplication.java


0 commentaires

1
votes

Les étapes ci-dessous m'ont aidé à résoudre le même problème. Juste au cas où ça aiderait,

  1. Dans android / app / src / main / java / com / {votreProjet} /MainApplication.java commentez la ligne ci-dessous:

    var formData = new FormData();
       formData.append('UserId', 'abc@abc.com');
       formData.append('VisitId', '28596');
       formData.append('EvidenceCapturedDate', '09/10/2019 13:28:20');
       formData.append('EvidenceCategory', 'Before');
       formData.append('EvidenceImage', {
         uri: Platform.OS === 'android' ? `file:///${path}` : `/private${path}`,
         type: 'image/jpeg',
         name: 'image.jpg',
       });
       axios({
         url: UrlString.BaseUrl + UrlString.imageUpload,
         method: 'POST',
         data: formData,
         headers: {
           Accept: 'application/json',
           'Content-Type': 'multipart/form-data'
         },
       })
         .then(function (response) {
           console.log('*****handle success******');
           console.log(response.data);
    
         })
         .catch(function (response) {
           console.log('*****handle failure******');
           console.log(response);
         });
    
  2. Dans android / app / src / debug / java / com / {yourProject} /ReactNativeFlipper.java commentaire à la ligne 43:

    builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
    
  3. Code pour le téléchargement d'image:

    initializeFlipper(this, getReactNativeHost().getReactInstanceManager())
    


0 commentaires

0
votes

Je sais qu'il est tard pour répondre mais aidez les autres

suivez les étapes suivantes

Dans le répertoire de votre projet, cliquez sur le dossier android, puis ouvrez gradle.properties et changez la version du fliper en ceci

< pré> XXX


0 commentaires