Estoy buscando una forma de descargar un archivo pdf binario, que obtengo a través de api. Tengo este archivo en el sistema de archivos de la aplicación local, pero me gustaría descargarlo en mi teléfono.
const pdf = Buffer.from(res.data, "binary").toString("base64"); const fileUri = FileSystem.documentDirectory + `${encodeURI("generated")}.pdf`; FileSystem.writeAsStringAsync(fileUri, pdf, { encoding: FileSystem.EncodingType.Base64 }).then((respond) => { downloadPdf(fileUri); //Sharing.shareAsync(fileUri); // Here I can share file by other apps }); const downloadPdf = async (uri) => { //Linking.openURL(uri) // #approach 1 // MediaLibrary.saveToLibraryAsync(uri).then(res => { // #approach 2 // console.log(res) // }).catch(err => { // console.log(err) // }) const permissions = await MediaLibrary.getPermissionsAsync(); try { const asset = await MediaLibrary.createAssetAsync(uri); // #approach 3 const album = await MediaLibrary.getAlbumAsync("Downloads"); if (album == null) { await MediaLibrary.createAlbumAsync("Downloads", asset, false); } else { await MediaLibrary.addAssetsToAlbumAsync([asset], album, false); } } catch (e) { console.log(e) } }; Probé diferentes formas de hacerlo, pero me detuve aquí con expo-media-library , que me da:
Error "No se puede copiar el archivo en el almacenamiento externo".
¿Es una buena dirección para usarlo? ¿Quizás tienes algunas soluciones mejores?