将 PDF 从 iOS 中的共享本地存储(Drive、OneDrive、Dropbox..)上传到 Ktor 失败的服务器

问题描述 投票:0回答:1

我正在为我的应用程序开发一项功能,用户可以从设备中的共享存储(Drive、onDrive、Dropbox 等)上传 PDF 我正在使用 Kotlin Multiplatform 2.0.20

这是我用来上传 iOS 版 PDF 的代码,它适用于从 iCloud 选择的文件、在设备和 Dropbox 中本地下载的文件,但不适用于 Google Drive

OneDrive

val documentPickerController = UIDocumentPickerViewController( forOpeningContentTypes = listOf(UTTypePDF) ) documentPickerController.allowsMultipleSelection = false val documentDelegate = remember { object : NSObject(), UIDocumentPickerDelegateProtocol { override fun documentPicker( controller: UIDocumentPickerViewController, didPickDocumentAtURL: NSURL ) { val accessing = didPickDocumentAtURL.startAccessingSecurityScopedResource() val data = try { NSData.dataWithContentsOfURL(didPickDocumentAtURL) } catch (e: Error) { e.printStackTrace() null } if (accessing == true) { didPickDocumentAtURL.stopAccessingSecurityScopedResource() } controller.dismissViewControllerAnimated(true, null) } } }
调试时我发现问题在这一行:

NSData.dataWithContentsOfURL(didPickDocumentAtURL)

它返回
null

没有抛出异常,甚至将其放入

try/catch

 块中也无助于理解 null 值背后的错误。

我没有 ObjectiveC 或 Swift 的专业知识,所以我正在寻求您的帮助:)

我发现这完全是一个类似的问题:

https://www.hackingwithswift.com/forums/swiftui/error-domain-nsposixerrordomain-code-2-no-such-file-or-directory-when-using-fileimporter -然后阅读内容/20397

除了他们使用 SwiftUI,但我不是,所以我想知道如何在我的情况下修复它。

如果有人遇到类似问题并可以分享他/她的想法,我很感激:)

谢谢!

ios swift objective-c file-upload kotlin-multiplatform
1个回答
0
投票

注意:我不是 kotlin 专家

在快速方面,我们正在这样做。

if fileURL.startAccessingSecurityScopedResource() { if let data = try? Data(contentsOf: fileURL) { //USE DATA HERE } fileURL.stopAccessingSecurityScopedResource() }
    
© www.soinside.com 2019 - 2024. All rights reserved.