web-dev-qa-db-ja.com

React Native?

React Native、for AndroidおよびiOS。ユーザーにPDF =ボタンをクリックしたときのファイル。

  • react-native-file-download はAndroidをサポートしていません
  • react-native-fs downloadFileをトリガーしても何もしません(通知バーに何も表示されません)。その後、ファイルを見つけることができません。追加した Android.permission.WRITE_EXTERNAL_STORAGEをAndroidマニフェストファイル。ダウンロードしようとしているファイルが存在することを再確認しました(存在しない場合、ライブラリはエラーをスローします)

この問題の他の解決策は見つかりません。 PDFを表示するためのライブラリを見つけましたが、ユーザーにPDFをダウンロードさせたいと思います。私を手伝ってくれますか?

20
Arnaud

1時間前にダウンロード機能を実装しました:p

次の手順を実行します:

a)npm install rn-fetch-blob

b)インストール手順に従います。

b2)rnpmを使用せずにパッケージを手動でインストールする場合は、 wiki に移動します。

c)最後に、アプリ内でファイルをダウンロードできるようにしました。

const { config, fs } = RNFetchBlob
let PictureDir = fs.dirs.PictureDir // this is the pictures directory. You can check the available directories in the wiki.
let options = {
  fileCache: true,
  addAndroidDownloads : {
    useDownloadManager : true, // setting it to true will use the device's native download manager and will be shown in the notification bar.
    notification : false,
    path:  PictureDir + "/me_"+Math.floor(date.getTime() + date.getSeconds() / 2), // this is the path where your downloaded file will live in
    description : 'Downloading image.'
  }
}
config(options).fetch('GET', "http://www.example.com/example.pdf").then((res) => {
  // do some magic here
})
27
Ray

Expoを使用している場合、react-native-fetch-blobは機能しません。 FileSystemを使用します。

これが実際の例です:

const { uri: localUri } = await FileSystem.downloadAsync(remoteUri, FileSystem.documentDirectory + 'name.ext');

これで、ダウンロードしたファイルへのパスを持つlocalUriができました。 name.extの代わりに独自のファイル名を設定してください。

10
Fancy John