在我的iOS项目中,我正在使用Alamofire
库以这种方式下载远程文档(来自具有Basic Auth的服务器):
let destination: DownloadRequest.DownloadFileDestination = { _, _ in
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
let fileURL = documentsURL.appendingPathComponent("foo.pdf")
return (filePath.url, [.removePreviousFile, .createIntermediateDirectories])
}
Alamofire.download(myUrlRequest, to: destination).authenticate(user: user, password: password, persistence: .none).validate().response { response in
print(response)
if response.error == nil, let path = response.destinationURL?.path {
print(path)
}
}
这很棒!该文件已正确下载到应用程序的Documents文件夹中。
我的问题是user
或/和password
错误。在这种情况下,服务器响应状态为401 Unauthorized
且.validate()
方法正确失败,但在我的Documents文件夹中,我找到文件“foo.pdf”,其中内容是xml,用于解释401
错误。我想要的是只有在验证没有失败时才保存文件。
我的问题:Alamofire有没有办法保存文件,以防万一回复得到验证?或者,当验证失败时,我是否必须手动删除文件?
答案 0 :(得分:1)
我现在遇到类似的问题。到目前为止,我唯一能想到的就是原油
if response.error != nil {
try? FileManager.default.removeItem(at: destinationURL)
}
回应关闭。
我会进一步调查。
编辑1:
很久以前这个问题似乎带来了这种行为https://github.com/Alamofire/Alamofire/issues/233