如何在 iOS 平台上创建并保存文件到“文件”应用程序?

4
我需要创建PDF文件(已完成),并将其保存到“Files”应用程序中,以便用户可以在我的应用程序之外的任何时间访问它。我尝试使用rn-fetch-blobreact-native-fs包,在Android上工作得很好,但是对于iOS,它们只能创建文件到内部应用存储器(因此文件未创建在外部存储器中,即不在iOS文件应用程序中)。我有什么选择来将我创建的文件保存到“Files”应用程序中?我知道这是可能的,例如Slack应用程序允许将文件保存到“Files”应用程序中。

我已经在info.plist中添加了以下键,但对我没有用。你在iOS的文件应用程序中使用哪个目录来保存下载的文件?我的功能与你的完全相同。 - JiteshW
3个回答

8

你需要在你的Info.plist文件中添加UISupportsDocumentBrowser键并将其设置为true,或同时添加UIFileSharingEnabledLSSupportsOpeningDocumentsInPlace键。

当用户通过文件应用程序从你的应用文档目录打开文档时,他们会直接在原地编辑文档。更改将保存到你的应用文档目录中。

有关更多信息,请参见此文档


谢谢!你的回答很有帮助。附言:我添加了你提到的所有密钥。 - E. Dn

2
您可以尝试使用react-native-fs在本地目录中保存和下载。

var url = path let fileName = path.split("/").pop() // console.log('fileName', fileName) var ext = this.extention(url); ext = "." + ext[0]; const localFile = ${RNFS.LibraryDirectoryPath}/${fileName}; // console.log('localFile', localFile)

        const options = {
            fromUrl: path,
            toFile: localFile,
            fileCache: true
        };

        if (await RNFS.exists(localFile)) {
            FileViewer.open(localFile, { displayName: this.props.route.params.conversationSubject });
        } else {
            await RNFS.downloadFile(options).promise
                .then((res) => {
                    // console.log('res', res)
                    FileViewer.open(localFile);
                })
                .then((res) => {
                    // success
                    // console.log("success", res);
                })
                .catch(error => {
                    // error
                    console.log("Attachment open error: ", error);
                });
        }

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接