如何在swift 3中压缩数据?

时间:2017-08-13 07:00:30

标签: ios swift3 base64 compression nsdata

我在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)
        }


        }

我用过

let compressedData = fileData(UF_COMPRESSED)

但这对我没有用,所以请在将文件转换为base 64进行上传之前帮助我压缩文件。

2 个答案:

答案 0 :(得分:6)

这是用Swift 3编写的libcompression包装器。 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)

答案 1 :(得分:1)

作为参考,从Swift 5.1开始,方法是:

<rule name="Rewrite Rule" stopProcessing="true">
      <match url=".*" />
      <conditions>
        <add input="{StaticRewrites:{REQUEST_URI}}" pattern="(.+)" />
      </conditions>
      <action type="Redirect" url="{C:1}" appendQueryString="false" redirectType="Permanent"/>
</rule>