我使用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
答案 0 :(得分:0)
我个人会在出现错误的情况下删除文件。就像你建议的那样。