2015-03-03 158 views
0

我正在從服務器下載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

什麼是'ASINetworkQueue'?提供適當鏈接或標記問題(包括'objective-c')。 – trojanfoe 2015-03-03 10:54:32

回答

3

ASIHTTP是一個非常舊的框架,可以回到iOS 4.0。到目前爲止,使用它非常棒 - 我在很多項目中都使用過它。然而,即使所有的編譯器標誌,它仍然是遠遠落後 - AFNetworking。如果你的項目不大,請考慮轉換 - 它有一個完成處理程序,比ASIHTTP的程序概念更現代化。

如果您不能切換 - 這是難以確定確切位置代碼南下,但networkQueue看起來很可疑,因爲你不將其分配給既不_networkQueue也不self.networkQueue這將表明它是一個實例變量,它可能不是真的。確保你沒有在方法中初始化隊列,在方法完成後最終會消失(考慮到ASIHTTP是異步的,這是有道理的,在那段時間只有1kb會被下載) 。

另外 - ASIHTTP是信號插槽模式驅動(觀察者) - 有委託方法讓隊列執行以查看正在進行的操作(requestDidStartSelector,requestDidFinishSelector)。

相關問題