Alamofire:即使验证失败,下载请求也会将错误响应保存为原始文件

时间:2017-11-09 15:24:33

标签: ios alamofire

我使用Alamofire 4.5.1下载一些mp3文件。

如果我提供的网址不正确或者请求无法获得授权,我会收到4xx状态代码(因为它应该是)的错误,在我的特殊情况下会出现错误解释的错误。

问题是Alamofire将错误xml响应保存到我的目标网址,如下所示:.../my-sound-file.mp3

在我的应用程序中与下载代码分离的其他地方,我可能稍后会检查我是否在磁盘上有.../my-sound-file.mp3并尝试播放它,这显然会失败,因为我的声音文件实际上是带有mp3的xml文件扩展

是否有更好的方法可以阻止Alamofire将错误数据保存为原始请求的文件?

我使用的代码(我对此问题的粗略解决方案):

let destination: DownloadRequest.DownloadFileDestination = ...

let request = self.sessionManager.download(url, to: destination)
request.validate()
request.response { response in
    if  response.error == nil {
        // do some stuff
    } else {
        // So far I am forced to manually remove file in case of error
        try? FileManager.default.removeItem(at: destURL)
        // propagate error
    }
}

我偶然发现了这一点,因为我认为如果请求验证失败,目标网址应为空。

我认为我不是唯一有这种假设的人:Alamofire: file download and validation failure

1 个答案:

答案 0 :(得分:0)

我个人会在出现错误的情况下删除文件。就像你建议的那样。

相关问题