【发布时间】:2021-09-09 19:13:01
【问题描述】:
当我使用 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)
【问题讨论】:
-
这是什么?让 localURL = filesDirectory.appendingPathComponent(fileName)
-
@ElTomato 对不起,我应该更清楚。我有一个
url,用于通过 HTTP 下载文件。我尝试使用let localURL = documentsDirectory.appendingPathComponent(fileName)的文件名重建localURL,认为这是自动保存文件的位置。所以我的问题是,即使在我使用try data.write(to: localURL)下载文件后,我是否必须自己保存文件? -
不,我认为它没有被保存,它正在创建 PDF 文档的内存表示。是的,您需要自己保存
-
您的意图是将其保存在本地,您应该使用
downloadTask而不是dataTask。请注意,它将保存一个临时文件whatever.tmp。您仍然有责任提供filename.ext和最终位置(目录)以使用 FileManager moveItem 方法将文件移动到。
标签: ios swift nsfilemanager