ホームページ  >  記事  >  ウェブフロントエンド  >  React-native-fs プラグインの使用例の詳細な説明

React-native-fs プラグインの使用例の詳細な説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-04-18 09:09:352239ブラウズ

今回は、react-native-fs プラグインの使用例について詳しく説明します。 実際の使用例を見てみましょう。一見。

react-native-fs プラグインは、ファイルのアップロードとダウンロード時に使用され、iOS と Android の両方で使用できます。ファイルアップロード (iOS のみ)。

インストールコマンド:

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

インストール後、

react-native link react-native-fs

を実行します。 android/app/src/main/AndroidManifest.xml に、Android がファイルを読み書きする権限を追加します

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

上記のインストール操作が完了すると、このプラグインのさまざまな方法が使用できるようになります。各方法の具体的な使用例については、リンク

https://

github.com/itinance/react-native-fs を参照してください。プロジェクトでは、画像ファイルをダウンロードし、ローカルにダウンロードした後に画像のパスを取得して、画像を表示する必要があります。したがって、downloadFileメソッドを使用します。呼び出し可能サービスをカプセル化します。コードは次のとおりです:

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")
    }
 
  },
この機能を実装すると、Android によってローカルにダウンロードされた写真が表示されなくなります。関連情報を調べたところ、Android がこのプラグインを呼び出すときに、

インターフェース検証

情報を追加する必要があるためです (インターフェースが必要な場合)。確認してください)、この問題の解決方法 React-native-fs プラグインを呼び出す際、データ インターフェイスに検証情報が必要な場合、Android で実行するとエラーが報告されますが、iOS で実行する場合は問題ありません。その理由は、インターフェースには検証情報が含まれていますが、このプラグインを呼び出すときに検証情報が渡されないためです。iOS では検証情報が自動的に追加されますが、Android では手動で設定する必要があります。

このエラーの回避策:

1.

ログイン インターフェース

を呼び出すときに、Cookie を保存し (Cookie は応答内にあります)、react-native-fs を呼び出すときにヘッダーに入れます。コードは次のとおりです。 2. React-native-fs を呼び出すときに、それをヘッダーに渡します。コードは次のとおりです。

_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);
      }
    );
  },
この記事の事例を読んだ後は、このメソッドを習得したと思います。さらに興味深い情報については、その他の情報に注意してください。関連記事はPHP中国語サイトにあります!

推奨読書:

js で文字制限が実装される 漢字 = 2 文字

js を使用して車のダッシュボードを実装する

以上がReact-native-fs プラグインの使用例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。