(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 或任何类型的文件。方法是什么?
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)
}
}
显然这是由于安全限制,您需要有安全书签才能访问文件。
我使用 didPickDocumentAt 函数在 DocumentPickerViewController 中检索所选文件的 url。我有一个使用alamofire上传文件到后端的分段上传功能。
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
print(url)
uploadMultipartFile()
}
我的问题是:我怎样才能得到我选择的文件的数据表示,以便我可以将它传递给我的 uploadMultipartFile 函数?
文件可以是 pdf、.docx 或任何类型的文件。方法是什么?
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)
}
}
显然这是由于安全限制,您需要有安全书签才能访问文件。