我正在从服务器下载pdf文件(250 mb)。当我保存到它文档目录。它被破坏只有1 kb的大小。
我正在使用此代码:
if (!networkQueue) {
networkQueue = [[ASINetworkQueue alloc] init];
}
UIProgressView *myProgressIndicatorImg;;
[networkQueue setDelegate:self];
[networkQueue setDownloadProgressDelegate:myProgressIndicatorImg];
[networkQueue setShowAccurateProgress:YES];
[networkQueue bytesDownloadedSoFar];
[networkQueue setRequestDidFinishSelector:@selector(requestFinished:)];
[networkQueue setRequestDidReceiveResponseHeadersSelector :@selector(requestRecieved:)];
ASIHTTPRequest *request;
request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"example.com"]];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"E_governance"];
NSLog(@"E_governance media path is %@",dataPath);
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:nil]; //Create folder
NSString *savePath=[NSString stringWithFormat:@"%@/%@",dataPath,@"Filename1.mp3"];
[request setDownloadDestinationPath:savePath];
[request setUserInfo:[NSDictionary dictionaryWithObject:@"request1" forKey:@"name"]];
[networkQueue addOperation:request];
[networkQueue go];
任何人都可以让我知道我在哪里做错了吗?
提前致谢。
答案 0 :(得分:3)
ASIHTTP
是一个非常旧框架,可以追溯到iOS 4.0。当它是最新的时,它很棒 - 我在许多项目中都使用它。然而,即使有编译器的所有标志,它仍然只是远在竞争对手后面 - AFNetworking。如果您的项目不是很大,请考虑切换 - 它有一个完成处理程序,比ASIHTTP
的程序概念更现代。
如果您无法切换 - 很难确定您的代码到底在哪里,但networkQueue
看起来非常可疑,因为您既没有将其分配给_networkQueue
也不是self.networkQueue
表示它是一个实例变量,可能不是真的。确保你没有在方法中初始化队列,这在方法完成后最终会消失(考虑到事实,ASIHTTP
是异步的,有意义的是,只有1kb会被下载到该方法中一段的时间)。
此外 - ASIHTTP
是信号槽模式驱动的(观察者) - 有队列的委托方法可以实现以查看正在进行的操作(requestDidStartSelector
,requestDidFinishSelector
)。