如何解决在哪里可以找到使用 URL 下载的文件?
当我使用 URL 下载文件时:
guard let url = url else { return }
let task = URLSession.shared.dataTask(with: url) { data,response,error in
guard let data = data,error == nil else {
return
}
if let doc = PDFDocument(data: data) {
dispatchQueue.main.async {
self.document = doc
}
}
}
task.resume()
文件是保存在目录中还是我必须保存?如果是前者,文件保存在哪里?我尝试使用文件名查找文件,但找不到:
guard let documentsDirectory = FileManager.default.urls(for: .documentDirectory,in: .userDomainMask).first else { return }
let fileName = url.lastPathComponent
let localURL = documentsDirectory.appendingPathComponent(fileName)
解决方法
从 URLSession docs 中它提到了这一点:
数据任务使用 NSData 对象发送和接收数据。数据任务旨在处理对服务器的简短且通常是交互式的请求。
下载任务以文件的形式检索数据,并在应用未运行时支持后台下载和上传。
由于您使用的是 URLSession.shared.dataTask(with:)
,因此它为您提供了数据的内存表示。如果您希望将其保存到文件中,您不妨使用 downloadTask
,然后在下载完成后将文件移动到适当的目录中。
您不是在下载文件。您正在将 URL 中的内容下载到 Data 对象中,然后将该数据转换为 PDFDocument
,它是 PDF 文档的内存表示。
如果要将文件保存到磁盘,则需要将文件保存到磁盘。您当前的代码没有这样做。
PDFDocument
类包含方法 write(to:)
,它将您的 PDF 文档保存到磁盘。您必须构建一个 URL 来描述磁盘上文件的路径,然后使用 write(to:)
保存到该 URL。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。