【问题标题】:why my UIDocumentPickerViewController returns me a url not reachable?为什么我的 UIDocumentPickerViewController 返回我无法访问的 url?
【发布时间】:2020-07-09 00:53:19
【问题描述】:

我正在使用 uIdocumentPickerViewController 在 firebase 中上传 pdf 文件,但是当我尝试上传时,我收到一条错误消息,提示无法访问此文件。

这是我的 uidocumentPickerViewController 的委托代码:

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {

            let storageReference = Storage.storage().reference()
            print(urls.first!)




            storageReference.child((urls.first?.deletingPathExtension().lastPathComponent)!).putFile(from: urls.first!, metadata: nil){(_, err) in
                if err != nil {
                    print((err?.localizedDescription)!)
                    return
                }

                print("success")
            }


        }

这是我在选择我的 pdf 文件后遇到的错误:

文件位于 URL:file:///private/var/mobile/Containers/Shared/AppGroup/7BE40C45-A4B5-4EE0-8AFF-789B2F93C1F6/File%20Provider%20Storage/Document%20PDF.pdf 无法访问。

域=NSCocoaErrorDomain 代码=257 xcode

【问题讨论】:

    标签: ios swift uidocumentpickerviewcontroller


    【解决方案1】:

    我正在使用 UIDocumentPicker,如下所示,它工作正常:

    首先我有一个枚举,

    enum UploadFileType{
        case photo
        case file
    }
    

    然后是一个结构:

    struct UploadFileData {
        var fileName: String
        var fileType: UploadFileType
        var fileData: NSData
    }
    
    var file: UploadFileData?
    
    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
        let fileManager = FileManager.default
        print(fileManager.fileExists(atPath: url.path))
        let data = NSData(contentsOfFile: url.path)
        guard let doc = data else {
            //  Utility.showAlert(message: Strings.ERROR.text, title: Strings.DOCUMENT_FORMAT_NOT_SUPPORTED.text, controller: self)
            return
        }
        self.file = UploadFileData(fileName: "\(url)", fileType: .file, fileData: doc)
        guard let dataFile = self.file?.fileData as Data? else {return}
    }
    

    【讨论】:

    • 我使用了和你一样的东西,但它不起作用。当我打印网址时,我得到了这个:file:///private/var/mobile/Library/Mobile%20Documents/com~apple~CloudDocs/Downloads/attestationHebergementSofianeBenslimane.pdf
    • 你得到什么网址?也许它不适合我,因为私人
    • "/private/var/mobile/Containers/Data/Application/678EFAE9-CB5E-4524-859E-3608FEqw123/tmp/se.Jarja-Inbox/abdulkarimkhan_resume.pdf"
    • 我的 url 中也有 private,它工作正常。 @sofiane_dv 尝试实现我使用文件管理器的方式。
    • 好的,非常感谢您的帮助,我创建了一个新项目并且它成功了。我不知道我以前做错了什么
    猜你喜欢
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 2016-01-23
    相关资源
    最近更新 更多