下载PDF文件并保存在文档目录中

Posted

技术标签:

【中文标题】下载PDF文件并保存在文档目录中【英文标题】:Download PDF file and save in document directory 【发布时间】:2018-07-17 06:02:04 【问题描述】:

我有以下代码允许我从 URL 下载 PDF 文件,它可以正常工作:

class ViewController: UIViewController 

    @IBOutlet weak var progressView: UIProgressView!

    override func viewDidLoad() 
        let _ = DownloadManager.shared.activate()
    

    override func viewWillAppear(_ animated: Bool) 
        super.viewWillAppear(animated)
        DownloadManager.shared.onProgress =  (progress) in
            OperationQueue.main.addOperation 
                self.progressView.progress = progress
            
        
    

    override func viewWillDisappear(_ animated: Bool) 
        super.viewWillDisappear(animated)
        DownloadManager.shared.onProgress = nil
    

    @IBAction func startDownload(_ sender: Any) 
        let url = URL(string: "https://d0.awsstatic.com/whitepapers/KMS-Cryptographic-Details.pdf")!
        let task = DownloadManager.shared.activate().downloadTask(with: url)
        task.resume()
    

文件当前正在发送到:file:///Users/cybermac/Library/Developer/CoreSimulator/Devices/CAEC75D0-423A-4FB2-B0D6-9E7CADB190A1/data/Containers/Data/Application/8B5CBFC8-7058-48DB-A1C4-872302A80610/Library/Caches/com.apple.nsurlsessiond/Downloads/com.example.DownloadTaskExample/CFNetworkDownload_Q7OVlf.tmp

如何将其保存到/Documents/

类似这样的:file:///Users/cybermac/Library/Developer/CoreSimulator/Devices/CAEC75D0-423A-4FB2-B0D6-9E7CADB190A1/data/Containers/Data/Application/64370B29-2C01-470F-AE76-17EF1A7BC918/Documents/

想法是保存在该目录中的文件可用于离线阅读(使用 PDFKit 或 webKit)。只有应用被删除才会被删除。

【问题讨论】:

检查这个。 (***.com/questions/34346220/…) @ChintaN-Maddy-Ramani,你的暗示链接与这个问题无关。 【参考方案1】:

您需要在下载后将文件移动到您的自定义位置。执行URLSessionDownloadDelegate,您将收到下载文件的位置。

委托方法:

func urlSession(_ session: URLSession, downloadTask: URLSessionDownloadTask, didFinishDownloadingTo location: URL)

移动文件的代码:

do 
    let documentsURL = try
        FileManager.default.url(for: .documentDirectory,
                                in: .userDomainMask,
                                appropriateFor: nil,
                                create: false)

    let savedURL = documentsURL.appendingPathComponent("yourCustomName.pdf")
    try FileManager.default.moveItem(at: location, to: savedURL)
 catch 
    print ("file error: \(error)")

要了解更多信息,请参阅this repo。

【讨论】:

打扰您了,参考您的回答。我可以问一个关于pdf文档文件的问题吗? @Newbie 是的,那是什么? 首先谢谢你。这是我的问题的链接。我完美地下载了 pdf 文件,但它无法访问离线模式。链接:***.com/questions/59715589/…

以上是关于下载PDF文件并保存在文档目录中的主要内容,如果未能解决你的问题,请参考以下文章

如何保存或下载网页中的pdf文档?

在网页中打开PDF文件 禁止保存

如何在 Objective-C 的 NSDocument 目录中保存和获取多个 pdf 文件?

能把网页中打开的pdf文件直接保存下来而不使用下载吗?

微信小程序里的pdf怎么下载

Xamarin.Forms 将文件 (pdf) 保存在本地存储中并使用默认查看器打开