2017-06-14 42 views
5

我正在爲Android和iOS構建一個React Native應用程序。我正在嘗試讓用戶在點擊按鈕時下載PDF文件。如何使用React Native下載文件?

  • react-native-file-download不支持Android
  • react-native-fs什麼也不做,當我觸發downloadFile(什麼也不顯示的通知欄上),我無法找到後該文件。我在Android Manifest文件中添加了android.permission.WRITE_EXTERNAL_STORAGE。我仔細檢查了我正在嘗試下載的文件(當它不存在時,庫會拋出錯誤)

我找不到其他解決方案。我找到了用於查看PDF的庫,但我想讓用戶下載PDF。請問你能幫幫我嗎?

回答

5

就實現下載功能一小時前:對

遵循以下步驟:

一)NPM安裝反應原生取二進制大對象 二)按照安裝說明。 b2)如果您想要在不使用rnpm的情況下手動安裝軟件包,請轉至其wiki。 三)最後,這就是我提出可以將我的應用程序中下載文件:

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 
}) 
+0

非常感謝:) – Arnaud

2

如果您使用世博會,react-native-fetch-blob將無法​​正常工作。使用FileSystem

這裏有一個工作示例:

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

現在你有localUri與路徑下載的文件。隨意設置您自己的文件名而不是name.ext

+0

我的服務器要求授權OAuth令牌以允許下載。有沒有辦法附加一個標題? – EnriqueDev

+0

@EnriqueDev我不這麼認爲,但是您可以解決這個問題 - 只需將您的令牌放入一個GET參數中,然後調整您的服務器以便以這種方式處理 –

+0

是的,我知道。但是,如何將結果數據保存到電話文件系統? – EnriqueDev

相關問題