Sae*_*ahi 3 compression base64 nsdata ios swift3
我在Swift 3中的文件管理器中有一些文件.我想上传它们,但是当我将它们转换为base 64时,它们的大小将是巨大的!所以我想在将数据转换为base 64之前压缩数据.
这是我的转换代码:
for i in 0...(rows?.count)! - 1 {
let filePath = filesurl[fileManagerViewController.selectedFileIndex[i]]
do {
let fileData = try Data.init(contentsOf: filePath)
let fileStream:String = fileData.base64EncodedString(options: NSData.Base64EncodingOptions.init(rawValue: 0))
fileManagerViewController.upupload.append(fileStream)
} catch {
print(error.localizedDescription)
}
}
Run Code Online (Sandbox Code Playgroud)
我用了
let compressedData = fileData(UF_COMPRESSED)
Run Code Online (Sandbox Code Playgroud)
但这对我不起作用,所以请在将文件转换为base 64进行上传之前帮助我压缩文件.
这是libcompression用Swift 3编写的包装器
.https://github.com/mw99/SwiftDataCompression
Swift libcompression包装器作为数据类型的扩展(ZLIB,LZFSE,LZMA,LZ4,deflate,RFC-1950,RFC-1951)
所以你可以压缩你的数据:
let fileData = try Data.init(contentsOf: filePath)
let compressedData = fileData.compress(withAlgorithm: .LZFSE)
Run Code Online (Sandbox Code Playgroud)
作为参考,从 Swift 5.1 开始,这样做的方法是:
let compressedData = fileData.compress(withAlgorithm: .LZFSE) as Data
Run Code Online (Sandbox Code Playgroud)