我试图阅读iCloud中存在的文件内容,我尝试使用react-native-fs或react-native-fetch-blob,两个库都给出相同的结果,因此问题应该是客观的c侧,这是代码:
如果我手动下载文件并查看编码内容,我会看到正确的数据,这样的编码字符串(这就是我需要的):
U2FsdGVkX19qe+9FMvVqZBb7U6E3g1ynMqBwYUosBiOv7b5rF4/dVenIfPvWuiiCxEHhN5ILrYdBDnPLqcytWO8KjBV4XuN2MvduBDNiB090vhVJnq+7jtOQZ7+uXbEZil9j2zyVRxTul2RTs/Uh3HglbK3iiExypcDRPGtfGB/OPncuaYq5ggxzHu26Ii6VJcBvmQVyTth9JG9wNYa6l+2FlTTqcdp/0Xr8/KamERw8xje9qVnLExLL8xjG8JhBTlLwVaMGnIiLee20wGXNhzzHdUwEDnHDZAo8wzcFAnG7605h/6S6vG6p25+gsOnC2Tc2xwOigrAJC7TuPN81ZZC8pdkzwtgktG9I7tOxyfbdw87t8/jw/CbIJr4m8ckxQy/kvEy6aApeYmhlX9L0rQ==
但是,当我通过文件系统使用上面的反馈原生文件库读取相同文件的内容时,我得到了这个:
YnBsaXN0MDDTAQIDBAUGXE5TVVJMTmFtZUtleV8QEE5TVVJMRmlsZVNpemVLZXlfEBhOU1VSTEZpbGVSZXNvdXJjZVR5cGVLZXlcbG9ja3kuYmFja3VwEQGYXxAcTlNVUkxGaWxlUmVzb3VyY2VUeXBlUmVndWxhcggPHC9KV1oAAAAAAAABAQAAAAAAAAAHAAAAAAAAAAAAAAAAAAAAeQ==
此字符串已解码:
bplist00Ó\NSURLNameKey_NSURLFileSizeKey_NSURLFileResourceTypeKey\locky.backup_NSURLFileResourceTypeRegular/JWZy
WTF吗
两个库中的javascript 代码,结果相同
// react-native-fs
RNFS.readFile(backup.path, 'base64')
.then((content) => {
console.log(content, atob(content))
})
.catch((err) => {
console.log('error', err)
})
// react-native-fetch-blob
RNFetchBlob.fs.readFile(backup.path, 'utf8')
.then((data) => {
console.log(data)
// handle the data ..
})
有什么建议吗? 感谢
答案 0 :(得分:0)
问题在于,当您的应用首次将文档的磁盘表示添加到iCloud(ubiquity)容器时,系统会将整个文件或文件包传输到iCloud服务器,此任务会创建文档的首先是元数据,其中包括文档名称,修改日期,文件大小和文件类型("错误"上面解码的字符串)等信息,然后传输数据(文件)。
中在iOS中,应用必须要求系统(显式或隐式)下载文件。您通过使用NSFileCoordinator类中的方法尝试访问该文件来隐式下载文件,或者通过调用NSFileManager类中的startDownloadingUbiquitousItemAtURL:error:方法显式下载该文件
就是这样,在调用此方法之后,可以读取文件并且内容正确而不是元数据。