当前位置: 首页 > 面试题库 >

下载PDF并保存到iPhone中的“文件”,而不保存到应用程序数据,Swift

司寇季
2023-03-14
问题内容

我尝试使用以下代码下载pdf文件。它存储在应用程序数据中。但是我需要在iPhone的 “文件” 文件夹中显示下载的pdf 。

    // Create destination URL
    let documentsUrl:URL =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first as URL!
    let destinationFileUrl = documentsUrl.appendingPathComponent("downloadedFile.jpg")

    //Create URL to the source file you want to download
    let fileURL = URL(string: "http://swift-lang.org/guides/tutorial.pdf")

    let sessionConfig = URLSessionConfiguration.default
    let session = URLSession(configuration: sessionConfig)

    let request = URLRequest(url:fileURL!)

    let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in
        if let tempLocalUrl = tempLocalUrl, error == nil {
            // Success
            if let statusCode = (response as? HTTPURLResponse)?.statusCode {
                print("Successfully downloaded. Status code: \(statusCode)")
            }

            do {
                try FileManager.default.copyItem(at: tempLocalUrl, to: destinationFileUrl)
            } catch (let writeError) {
                print("Error creating a file \(destinationFileUrl) : \(writeError)")
            }

        } else {
            print("Error took place while downloading a file. Error description: %@", error?.localizedDescription ?? "");
        }
    }
    task.resume()

可能吗??


问题答案:

这是下载任何文件并保存到“照片”(如果是图像文件)或“文件”(如果是pdf)的方法

let urlString = "your file url"
let url = URL(string: urlString)
let fileName = String((url!.lastPathComponent)) as NSString
// Create destination URL
let documentsUrl:URL =  FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first as URL!
let destinationFileUrl = documentsUrl.appendingPathComponent("\(fileName)")
//Create URL to the source file you want to download
let fileURL = URL(string: urlString)
let sessionConfig = URLSessionConfiguration.default
let session = URLSession(configuration: sessionConfig)
let request = URLRequest(url:fileURL!)
let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in
    if let tempLocalUrl = tempLocalUrl, error == nil {
        // Success
        if let statusCode = (response as? HTTPURLResponse)?.statusCode {
            print("Successfully downloaded. Status code: \(statusCode)")
        }
        do {
            try FileManager.default.copyItem(at: tempLocalUrl, to: destinationFileUrl)
            do {
                //Show UIActivityViewController to save the downloaded file
                let contents  = try FileManager.default.contentsOfDirectory(at: documentsUrl, includingPropertiesForKeys: nil, options: .skipsHiddenFiles)
                for indexx in 0..<contents.count {
                    if contents[indexx].lastPathComponent == destinationFileUrl.lastPathComponent {
                        let activityViewController = UIActivityViewController(activityItems: [contents[indexx]], applicationActivities: nil)
                        self.present(activityViewController, animated: true, completion: nil)
                    }
                }
            }
            catch (let err) {
                print("error: \(err)")
            }
        } catch (let writeError) {
            print("Error creating a file \(destinationFileUrl) : \(writeError)")
        }
    } else {
        print("Error took place while downloading a file. Error description: \(error?.localizedDescription ?? "")")
    }
}
task.resume()


 类似资料:
  • 我用ajax提交了一个表单,在表单提交后,我需要下载一个用php库MPDF在服务器端生成的pdf文件。我不想在服务器中保存pdf文件,因为在用户加载后,该文件不再需要了。我在谷歌上搜索过,有人建议使用Blob对象。我还返回一个json响应以显示给用户。有人能解释一下是否可能以及如何实现吗?多谢 cache-control public,必须重新验证,max-age=0连接 Keep-Alive内容

  • 问题内容: 我正在编写一个应用程序,该应用程序从url下载图像,然后使用aws-sdk将其上传到S3存储桶。 以前,我只是下载图像并将其保存到磁盘中,就像这样。 然后像这样将图像上传到AWS S3 但是我想跳过将图像保存到磁盘的部分。有什么办法可以让我对一个变量进行响应,然后将其上传? 问题答案: 这是一些可以很好地做到这一点的javascript:

  • 问题内容: 我正在尝试从网站下载PDF文件并将其保存到磁盘。我的尝试因编码错误而失败,或者导致PDF空白。 我知道这是某种编解码器问题,但我似乎无法使其正常工作。 问题答案: 在这种情况下,您应该使用: 从文件: 对于非文本请求,您还可以字节形式访问响应主体: 因此,这意味着:将输出作为字符串对象返回,在下载 文本文件 时使用它。如HTML文件等 并以字节对象返回输出,在下载 二进制文件 时使用它

  • 在我的服务器中,每小时生成一个文件,通常是250到300 mb,我想下载这些文件并将其放在hadoop下。如果有人有任何想法,请回复如何做。

  • 下面的代码在内存中创建了一个文件。 我想把那个pdf文件保存在磁盘上以便查看。我将如何在python中实现它?