使用 Alamofire 4 (Swift 3) 下载文件的路径
Posted
技术标签:
【中文标题】使用 Alamofire 4 (Swift 3) 下载文件的路径【英文标题】:Path to downloaded file with Alamofire4 (Swift3) 【发布时间】:2016-11-02 03:23:34 【问题描述】:我用 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 文件路径有误吗?
【问题讨论】:
【参考方案1】:在解压之前尝试检查所有路径是否正确:
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
【讨论】:
【参考方案2】:只是不能通过附加路径来创建文件夹名称,需要单独创建文件夹。这是代码试试这个!
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!)
【讨论】:
我已经尝试过了,但是尝试抛出有这个错误:Domain=NSCocoaErrorDomain Code=512 "Impossible to save file «Images » in folder «Documents »." UserInfo=NSFilePath=/Users/username/Library/Developer/CoreSimulator/Devices/3D7DE09C-CA8B-4E32-A048-2B33887CE47B/data/Containers/Data/Application/xxxx/Documents/Images, NSUnderlyingError=0x60800005bfc0 Error Domain=NSPOSIXErrorDomain代码=20“不是目录”:文件/Library/Caches/com.apple.xbs/Sources/swiftlang/swiftlang-800.0.58.6/src/swift/stdlib/public/core/ErrorType.swift,第178行为什么它不是目录?以上是关于使用 Alamofire 4 (Swift 3) 下载文件的路径的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3 的 ObjectMapper 和 Alamofire 问题 Alamofire 4 的 Alamofire 版本
如何使用参数 swift 3.0 Alamofire 4.0 调用邮政服务?
使用 Swift 3 的 Alamofire 4.0 出现“没有成员”错误