1

我用 Alamofire4 下载了一个 zip 文件并用 SSZipArchive 解压缩,但解压缩不起作用。我不确定下载文件的路径是否适合 Alamofire。

这是代码:

let destination: DownloadRequest.DownloadFileDestination = { _, _ in
    var documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
    return (documentsURL, [.removePreviousFile])

}
Alamofire.download(urlString, method: .get, parameters: parameters, encoding: JSONEncoding.default, to: destination)
.response{ response in

   if response.error == nil {

     let filename = response.response?.suggestedFilename
     var folderDestination=response.destinationURL?.path
     folderDestination=folderDestination?.appending("/\(nameCategory)")

     archiveToUnzip=(folderDestination?.appending("/\(filename!)"))!

     //unzip
     let successUnZip=SSZipArchive.unzipFile(atPath: archiveToUnzip, toDestination:folderDestination!)

     if !successUnZip {
        SpeedLog.print("Problem unzip")
     }
  }
}

它显示“问题解压缩”,所以我的 zip 文件路径有误吗?

4

2 回答 2

0

在解压缩之前尝试检查所有路径是否正确:

    guard let zipPath = (folderDestination?.appending("/\(filename!)"))! else {
         print("Error: zipPath are not correct: \(zipPath)")    
         return
    }

    guard let unzipPath = folderDestination! else {
        print("Error: unzipPath are not correct: \(unzipPath)")
        return
    }

    let success = SSZipArchive.unzipFile(atPath: zipPath, toDestination: unzipPath)
    if !success {
        print("Error: unzipFile operation failed")
        return
    }
于 2016-11-02T03:42:46.877 回答
0

根本无法通过附加路径来创建文件夹名称,您需要单独创建文件夹。这是代码试试这个!

 let filename = response.response?.suggestedFilename
 var folderDestination=response.destinationURL?.path
 folderDestination=folderDestination?.appending("/\(nameCategory)")
 try! FileManager.default.createDirectory(at: folderDestination!, withIntermediateDirectories: false, attributes: nil)

 archiveToUnzip=(folderDestination?.appending("/\(filename!)"))!

 //unzip
 let successUnZip=SSZipArchive.unzipFile(atPath: archiveToUnzip,toDestination:folderDestination!)
于 2016-11-02T14:26:27.323 回答