从 urlsessiondownloadtask 获取流

问题描述 投票:0回答:1

当我们使用 urlsessiondownloadtask 下载文件时,会有一个临时文件,其中按块保存数据。 有什么办法可以将数据块不保存在磁盘上并将其存储在内存中吗? 或者有什么办法可以修改数据流? 问题是我需要加密应用程序中的所有数据。

ios swift stream
1个回答
0
投票

您可以使用

URLSessionDownloadTask
,而不是使用
URLSessionDataTask
,它允许您按块处理传入数据。这样,您可以在接收数据时对其进行加密,然后将其写入磁盘或保留在内存中。

let url = URL(string: "https://example.com/file")!
let task = URLSession.shared.dataTask(with: url) { (data, response, error) in
    if let data = data {
        // Encrypt the data here
        let encryptedData = encrypt(data)
        
        // Do something with encryptedData
        // ...
    }
}
task.resume()

如果您无法避免使用

URLSessionDownloadTask
,另一种方法是等到下载完成并创建临时文件。然后,读取文件,对其进行加密,并将加密的数据保存回磁盘。如果您正在处理大文件或具有强制要求即时加密的严格安全要求,则此方法可能不适合。

© www.soinside.com 2019 - 2024. All rights reserved.