में डाउनलोड कार्यक्षमता फिर से शुरू करें मैं NSURLConnection क्लास के साथ सर्वर से कुछ बहुत बड़ा डेटा डाउनलोड कर रहा हूं।NSURLConnection
मैं एक विराम सुविधा कैसे कार्यान्वित कर सकता हूं ताकि मैं डाउनलोड फिर से शुरू कर सकूं?
में डाउनलोड कार्यक्षमता फिर से शुरू करें मैं NSURLConnection क्लास के साथ सर्वर से कुछ बहुत बड़ा डेटा डाउनलोड कर रहा हूं।NSURLConnection
मैं एक विराम सुविधा कैसे कार्यान्वित कर सकता हूं ताकि मैं डाउनलोड फिर से शुरू कर सकूं?
आप रोक नहीं सकते हैं, प्रति-से, लेकिन आप एक कनेक्शन रद्द कर सकते हैं, और फिर पुराने बाएं बंद होने के लिए फिर से शुरू करने के लिए एक नया बना सकते हैं। हालांकि, जिस सर्वर से आप कनेक्ट कर रहे हैं उसे रेंज हेडर का समर्थन करना होगा। इसे "बाइट्स = size_already_downloaded-" पर सेट करें, और इसे ठीक से उठाया जाना चाहिए जहां आपने इसे रद्द कर दिया था।
बहुत अच्छा जवाब –
डाउनलोड होना शुरू हो और कुछ इस तरह करने से फ़ाइल के बाकी आप में HTTP अनुरोध हेडर Range
मूल्य निर्धारित कर सकते हैं पाने के लिए:
- (void)downloadFromUrl:(NSURL*)url toFilePath:(NSString *)filePath {
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
if (!request) {
NSLog(@"Error creating request");
// Do something
}
[request setHTTPMethod:@"GET"];
// Add header to existing file
NSFileManager *fm = [NSFileManager defaultManager];
if([fm fileExistsAtPath:filePath]) {
NSError *error = nil;
NSDictionary * fileProp = [fm attributesOfItemAtPath:filePath error:&error];
if (error) {
NSLog(@"Error: %@", [error localizedDescription]);
// Do something
} else {
// Set header to resume
long long fileSize = [[fileProp objectForKey:@"NSFileSize"]longLongValue];
NSString *range = @"bytes=";
range = [[range stringByAppendingString:[[NSNumber numberWithLongLong:fileSize] stringValue]] stringByAppendingString:@"-"];
[request setValue:range forHTTPHeaderField:@"Range"];
}
}
NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if (!connection) {
NSLog(@"Connection failed.");
// Do something
}
}
इसके अलावा, आप की जाँच करने के - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
उपयोग कर सकते हैं, तो मौजूदा फ़ाइल पूरी तरह से है अनुमानित आकार की जांच करके डाउनलोड किया गया: [response expectedContentLength];
। यदि आकार मिलान करते हैं तो आप शायद कनेक्शन रद्द करना चाहते हैं।
Finaly एक कामकाजी समाधान मिला। बहुत बहुत धन्यवाद :-) – byJeevan
क्या आप विराम सुविधा को लागू करने में सफल रहे हैं? –