ios - AFNetworking downloadTaskWithRequest :progress:destination:completionHandler: not writing file to the path

标签 ios ios8 afnetworking-2

我正在尝试使用 AFNetworking (2.5.4) 下载文件。下载完成,调用完成处理程序,错误设置为 nil,一切似乎都很好,但目标文件不存在:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSString *fullPath = [valid path from my apps local manager]
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:req progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
    return [NSURL URLWithString:fullPath];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
    NSLog(@"Saved file to %@.", filePath);
    *** [[NSFileManager defaultManager] fileExistsAtPath:filePath.absoluteString] returns NO here ***
}];
[cell.progressView setProgressWithDownloadProgressOfTask:downloadTask animated:YES];
[downloadTask resume];

文件路径是我的应用具有写入权限的常规路径:

/var/mobile/Containers/Data/Application/APP-GUID-REDACTED/Documents/FILE-NAME-REDACTED.docx

在 AFNetworking 之前,我使用了一种不同的方法,它可以很好地写入完全相同的路径。 HTTP 响应 header 完美显示所有内容(状态 200、正确的内容长度等),如果我 curl 下载 URL,它会毫无问题地下载文件。文件没有问题。

尽管没有错误,为什么我的目标文件没有写入完成处理程序?

更新:我也尝试过 AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 但它没有任何改变。我还尝试创建一个 NSProgress 指针并将其发送给 progress 参数,但无济于事。

最佳答案

使用 [NSURL fileURLWithPath:](不是 URLWithString)。

return [NSURL fileURLWithPath:fullPath];

关于ios - AFNetworking downloadTaskWithRequest :progress:destination:completionHandler: not writing file to the path,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30865372/

相关文章:

uiview - Swift 中的 resignFirstResponder

ios - 在 Swift 中为 Controller 属性赋值

ios - 如何使用 AFnetworking 图像缓存刷新 iOS 谷歌地图中的标记信息窗口?

ios - 登录和完成处理程序

ios - 如何在iOS中模拟命令行或终端?

swift - 使用 XCode 6 在我的应用程序中嵌入自定义二进制文件

ios - 如何允许用户在 iOS 中使用 AFNetworking 信任和固定自签名 SSL 证书

ios - AFNetworking 回调 - 委托(delegate)还是通知?

ios - 我的 AVPlayer 的本地路径视频出现字符串错误

ios - 识别用户手指在 iPhone 屏幕上绘制的数字的最佳方法