2017-08-13 9 views
1

J'ai quelques fichiers dans le gestionnaire de fichiers dans swift 3 Je veux les télécharger mais quand je les ai convertis en base 64, leur taille sera énorme! donc je veux compresser les données avant de convertir en base 64comment compresser des données dans swift 3?

ici est mes codes pour convertir

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


     } 

je

let compressedData = fileData(UF_COMPRESSED) 

Mais ne fonctionne pas pour moi, donc s'il vous plaît aidez-moi à compresser fichiers fichiers avant de les convertir en base 64 pour le téléchargement

Répondre

2

Voici l'emballage libcompression écrit dans Swift 3. https://github.com/mw99/SwiftDataCompression

wrapper Swift libcompression comme une extension pour le type de données (ZLIB, LZFSE, LZMA, LZ4, dégonfler, RFC-1950, RFC-1951)

Vous pouvez compresser vos données comme ça :

let fileData = try Data.init(contentsOf: filePath) 
let compressedData = fileData.compress(withAlgorithm: .LZFSE)