Как сказано в документации, PictureDir доступен только в Android.
https://github.com/joltup/rn-fetch-blob/wiki/File-System-Access-API#dirs
DocumentDir
CacheDir
MainBundleDir (Can be used to access files embedded on iOS apps only)
DCIMDir (Android Only)
DownloadDir (Android Only)
MusicDir (Android Only)
PictureDir (Android Only)
MovieDir (Android Only)
RingtoneDir (Android Only)
SDCardDir (0.9.5+ Android Only)
Вы должны использовать DocumentDir
или CacheDir
для сохранения файлов на iOS
Вы можете сделать что-то подобное, что позволит вам использовать разные каталоги в зависимости от ОС
import { Platform } from 'react-native';
...
let PictureDir = Platform.OS === 'ios' ? fs.dirs.DocumentDir : fs.dirs.PictureDir;
Обновление
Я опробовал ваш обновленный код, и он работает, однако мне пришлось сделать одну настройку.
Когда вы используете addAndroidDownloads
, вы должны знать, что вы не можете установить свой собственный путь для Android.
При использовании DownloadManager, fileCache и свойств пути в конфигурации
не вступит в силу, потому что Android DownloadManager может хранить только
файлы на внешнее хранилище, также обратите внимание, что Download Manager может только
поддержка метода GET, что означает, что тело запроса будет игнорироваться.
https://github.com/joltup/rn-fetch-blob#android-media-scanner-and-download-manager-support
Чтобы установить путь, чтобы iOS знала, где хранить файл, вы должны установить путь вне этого addAndroidDownloads
объекта, чтобы ваши параметры стали такими:
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,
description : 'Downloading image.'
},
path: PictureDir + "/me_"+Math.floor(date.getTime() + date.getSeconds() / 2) // this is the path where your downloaded file will live in
}
Для iOS он будет игнорировать настройки в addAndroidDownloads
, и файл будет сохранен в каталоге документов на устройстве, так как это заданный путь.
Если вы хотите сохранить файл в фотогалерее устройства на iOS, вам нужно будет использовать CameraRoll
Вы можете увидеть ответ, который я дал о том, как его использовать, здесь https://stackoverflow.com/a/54125033/5508175