(Swift) 如何获取 documentPicker 的数据表示 URL

(Swift) How can I get a Data representation of the documentPicker URL

我使用 didPickDocumentAt 函数在 DocumentPickerViewController 中检索所选文件的 url。我有一个使用alamofire上传文件到后端的分段上传功能。

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
    print(url)
    uploadMultipartFile()
}

我的问题是:我怎样才能得到我选择的文件的数据表示,以便我可以将它传递给我的 uploadMultipartFile 函数?

文件可以是 pdf、.docx 或任何类型的文件。方法是什么?

看看dataWithContentsOfURL:

Returns a data object containing the data from the location specified by a given URL.

请注意,它 throws 如果它无法从 URL 创建数据表示。

所以在你的情况下可能是这样的:

func documentPicker(_ controller: UIDocumentPickerViewController, 
      didPickDocumentsAt urls: [URL]) {
print(url)
    do {
        var documentData = [Data]()
        for url in urls {
            documentData.append(try Data(contentsOf: url))
        }

        //hopefully you have an array of data elements now :)                
        uploadMultipartFile()
    } catch {
        print("no data")
    }
}

希望对您有所帮助。

对我来说没用。什么有效:

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
    guard
        let url = urls.first,
        url.startAccessingSecurityScopedResource()
    else {
            return
    }
    defer { url.stopAccessingSecurityScopedResource() }
    do {
        let data = try Data(contentsOf: url)
        print(data)
        //DO SMTH WITH YOUR DATA
    } catch {
            print(error)
    }
}

显然这是由于安全限制,您需要有安全书签才能访问文件。