Alamofire:文件下载和验证失败

时间:2017-07-21 10:28:52

标签: ios swift validation download alamofire

在我的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有没有办法保存文件,以防万一回复得到验证?或者,当验证失败时,我是否必须手动删除文件?

1 个答案:

答案 0 :(得分:1)

我现在遇到类似的问题。到目前为止,我唯一能想到的就是原油

if response.error != nil {
    try? FileManager.default.removeItem(at: destinationURL)
}

回应关闭。

我会进一步调查。

编辑1:

很久以前这个问题似乎带来了这种行为https://github.com/Alamofire/Alamofire/issues/233