Maison > interface Web > js tutoriel > le corps du texte

Explication détaillée des cas d'utilisation du plug-in React-Native-Fs

php中世界最好的语言
Libérer: 2018-04-18 09:09:35
original
2245 Les gens l'ont consulté

Cette fois, je vais vous apporter une explication détaillée des cas d'utilisation du plug-in réagissez-native-fs Quelles sont les précautions lors de l'utilisation du plug-in réactif-native-fs Ici. sont les cas réels, jetons un coup d'œil.

Le plug-in React-native-fs est utilisé pour le téléchargement et le téléchargement de fichiers. Il peut être utilisé à la fois sur iOS et Android, pour le téléchargement de fichiers (iOS uniquement).

Commande d'installation :

npm install react-native-fs --save
//注意:如果react native版本是<0.40安装,使用此标签:
npm install react-native-fs@2.0.1-rc.2 --save
Copier après la connexion

Après l'installation, exécutez :

react-native link react-native-fs
Copier après la connexion

Dans android/app/src/main/AndroidManifest.xml, ajoutez les autorisations de lecture et d'écriture Android sur les fichiers

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
Copier après la connexion

Après avoir terminé les opérations d'installation ci-dessus, vous pouvez utiliser différentes méthodes de ce plug-in. Pour des exemples d'utilisation spécifiques de chaque méthode, veuillez consulter le lien : https://github.com/itinance/react-native. -fs. Dans le projet, je dois télécharger le fichier image, obtenir le chemin de l'image après le téléchargement en local, puis afficher l'image. Utilisez donc la méthode downloadFile. Encapsule un service appelable, le code est le suivant :

downloadFile(imageId, cookie, callback) {
    const downloadDest = `${RNFS.DocumentDirectoryPath}/${((Math.random() * 1000) | 0)}.jpg`;
    var formUrl = CommonSvc.baseURL + '/api/image/0/' + imageId;
    //var formUrl = 'http://lorempixel.com/400/200/';
    const options = {
      fromUrl: formUrl,
      toFile: downloadDest,
      background: true,
      headers: {
        'Cookie': cookie //需要添加验证到接口要设置cookie
      },
      begin: (res) => {
        //console.log(res);
      },
      progress: (res) => {
        //console.log(res);
      }
    };
    try {
      const ret = RNFS.downloadFile(options);
      ret.promise.then(res => {
        //callback(null, Platform.OS === 'android' ? downloadDest : 'file://' + downloadDest)
        callback(null, 'file://' + downloadDest)
 
      }).catch(err => {
        callback(err)
      });
    }
    catch (e) {
      callback("error")
    }
 
  },
Copier après la connexion

Lors de la mise en œuvre de cette fonction, les images téléchargées en local par Android ne peuvent pas être affichées. Après avoir consulté les informations pertinentes, la raison en est que lorsque Android appelle ce plug-in, il doit ajouter des informations de vérification de l'interface (si l'interface doit être vérifiée) (ci-dessous), comment résoudre ce problème

Lors de l'appel du plug-in react-native-fs, si l'interface de données nécessite des informations de vérification, une erreur sera signalée lors de l'exécution sur Android, mais il n'y aura aucun problème lors de l'exécution sur iOS. La raison en est que l'interface contient des informations de vérification, mais elles ne sont pas transmises lors de l'appel de ce plug-in. Sur iOS, les informations de vérification seront automatiquement ajoutées, tandis que sur Android, elles doivent être définies manuellement.

Solution de contournement pour cette erreur :

1. Lorsque vous appelez l' interface de connexion , enregistrez le cookie (le cookie est dans la réponse) et placez-le dans les en-têtes lors de l'appel de React-native-fs. Le code est le suivant :

<.>
_appLogin(userName, password, callback){
 
    fetch(commonSvc.baseURL + '/account/app-login', {
      method: 'POST',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        UserName: userName,
        Password: password
      })
    }).then(
      (response) => {
        if (response.ok) {
          return response;
        } else {
          var message;
          switch (response.status) {
            case 710:
              message = LanguageChooseSvc.strings['api_common_' + 710];
              break;
            case 711:
              message = LanguageChooseSvc.strings['api_common_' + 711];
              break;
            case 400:
              message = LanguageChooseSvc.strings['api_common_' + 400];
              break;
            default:
              message = commonSvc.httpErrorMessage;
              break;
          }
          throw {message: message};
        }
      }
    ).then(
      (responseJson) => {
        callback(null, responseJson);
      }
    ).catch(
      (error) => {
        callback(error.message);
      }
    );
  },
Copier après la connexion
2. Lorsque vous appelez React-native-fs, mettez-le dans les en-têtes. Le code est le suivant :

 downloadFile(imageId, cookie, callback) {
    const downloadDest = `${RNFS.DocumentDirectoryPath}/${((Math.random() * 1000) | 0)}.jpg`;
    var formUrl = CommonSvc.baseURL + '/api/image/0/' + imageId;
    //var formUrl = 'http://lorempixel.com/400/200/';
    const options = {
      fromUrl: formUrl,
      toFile: downloadDest,
      background: true,
      headers: {
        'Cookie': cookie //需要添加验证到接口要设置cookie
      },
      begin: (res) => {
        //console.log(res);
      },
      progress: (res) => {
        //console.log(res);
      }
    };
    try {
      const ret = RNFS.downloadFile(options);
      ret.promise.then(res => {
        //callback(null, Platform.OS === 'android' ? downloadDest : 'file://' + downloadDest)
        callback(null, 'file://' + downloadDest)
 
      }).catch(err => {
        callback(err)
      });
    }
    catch (e) {
      callback("error")
    }
 
  },
Copier après la connexion
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. , veuillez prêter attention aux autres sujets connexes dans l'article du site Web PHP chinois !

Lecture recommandée :

js implémente une limite de caractères caractères chinois = deux caractères

Utiliser js pour implémenter un tableau de bord de voiture

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!