मैं AFNetworking लाइब्रेरी का उपयोग कर रहा हूं। मैं यह नहीं समझ सकता कि फ़ाइल कैसे डाउनलोड करें और इसे दस्तावेज़ निर्देशिका में कैसे सहेज लें।फ़ाइल डाउनलोड करने और AFNetworking के साथ दस्तावेज़ निर्देशिका में सहेजने के लिए कैसे?
उत्तर
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"..."]];
AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"filename"];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Successfully downloaded file to %@", path);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[operation start];
मैं @ mattt के जवाब उछाल और AFNetworking 2.0 के लिए एक संस्करण पोस्ट AFHTTPRequestOperationManager
का उपयोग कर रहा हूँ।
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"filename"];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFHTTPRequestOperation *op = [manager GET:@"http://example.com/file/to/download"
parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"successful download to %@", path);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
op.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
मैं निश्चित रूप से नई एएफनेटवर्किंग लाइब्रेरी – Thomas
@swilliams [AFHTTPRequestOperationManager प्रबंधक] के साथ ऐसा करने की अनुशंसा करता हूं डिफ़ॉल्ट AFJSONResponseSerializer का उपयोग करके नया प्रबंधक ऑब्जेक्ट बनाएगा, क्या आप चाहते हैं? मुझे लगता है कि फ़ाइल को छूने के लिए AFNoneResponseSerialize बनाने के लिए बेहतर है – onmyway133
मैं इसमें डाउनलोड प्रगति पैरामीटर कैसे प्राप्त कर सकता हूं? – shshnk
मैं बात कर रहा हूँ के बारे में AFNetworking 2,0
[AFHTTPRequestOperationManager manager]
डिफ़ॉल्ट AFJSONResponseSerializer साथ प्रबंधक वस्तु बनाता है, और यह सामग्री प्रकार प्रतिबंध प्रदर्शन करती है। इस
- (BOOL)validateResponse:(NSHTTPURLResponse *)response
data:(NSData *)data
error:(NSError * __autoreleasing *)error
पर एक नजर डालें तो हम एक कोई भी प्रतिक्रिया serializer बना सकते हैं और सामान्य रूप में AFHTTPRequestOperationManager
उपयोग करने के लिए की जरूरत है।
यहाँ AFNoneResponseSerializer है
@interface AFNoneResponseSerializer : AFHTTPResponseSerializer
+ (instancetype)serializer;
@end
@implementation AFNoneResponseSerializer
#pragma mark - Initialization
+ (instancetype)serializer
{
return [[self alloc] init];
}
- (instancetype)init
{
self = [super init];
return self;
}
#pragma mark - AFURLResponseSerializer
- (id)responseObjectForResponse:(NSURLResponse *)response
data:(NSData *)data
error:(NSError *__autoreleasing *)error
{
return data;
}
@end
प्रयोग
self.manager = [AFHTTPRequestOperationManager manager];
self.manager.responseSerializer = [AFNoneResponseSerializer serializer];
[self.manager GET:@"https://sites.google.com/site/iphonesdktutorials/xml/Books.xml"
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
if (success) {
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}];
ताकि हम किसी भी क्रमबद्धता के बिना पूरी फ़ाइल प्राप्त कर सकते हैं
हाँ, यह AFNetworking 2.0
उपयोग करने के लिए बेहतर है AFHTTPRequestOperationManager
के साथ रास्ता। पुराने तरीके से मेरी फाइल डाउनलोड की गई लेकिन किसी कारण से फाइल सिस्टम में अपडेट नहीं हुआ।
उत्तर में डाउनलोड प्रगति दिखाने के लिए AFNetworking 2.0
में आप समान रूप से करते हैं - आउटपुट स्ट्रीम सेट करने के बाद बस प्रगति ब्लॉक डाउनलोड करें।
__weak SettingsTableViewController *weakSelf = self;
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:newFilePath append:NO];
[operation setDownloadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToRead) {
float progress = totalBytesWritten/(float)totalBytesExpectedToRead;
NSString *progressMessage = [NSString stringWithFormat:@"%@ \n %.2f %% \n %@/%@", @"Downloading ...", progress * 100, [weakSelf fileSizeStringWithSize:totalBytesWritten], [weakSelf fileSizeStringWithSize:totalBytesExpectedToRead]];
[SVProgressHUD showProgress:progress status:progressMessage];
}];
यह बाइट्स स्ट्रिंग बनाने के लिए मेरी विधि है:
- (NSString *)fileSizeStringWithSize:(long long)size
{
NSString *sizeString;
CGFloat f;
if (size < 1024) {
sizeString = [NSString stringWithFormat:@"%d %@", (int)size, @"bytes"];
}
else if ((size >= 1024)&&(size < (1024*1024))) {
f = size/1024.0f;
sizeString = [NSString stringWithFormat:@"%.0f %@", f, @"Kb"];
}
else if (size >= (1024*1024)) {
f = size/(1024.0f*1024.0f);
sizeString = [NSString stringWithFormat:@"%.0f %@", f, @"Mb"];
}
return sizeString;
}
मदद करें जब मैं वीडियो डाउनलोड करता हूं और डाउनलोड पूर्ण होने पर वापस क्लिक करता हूं। और फिर मैं उस वीडियो पर क्लिक करता हूं उस समय मुझे यह त्रुटि मिलती है => MediaPlayerErrorDomain Code = -11800 ... तो कृपया मुझे –
पिछले जवाब के अलावा, AFNetworking 2.5.0 और iOS7/8 के साथ मैं ने पाया है कि कि खोलने के अतिरिक्त कदम ऐप को फांसी से रोकने के लिए आउटपुट स्ट्रीम की भी आवश्यकता है (और अंततः स्मृति की कमी से दुर्घटनाग्रस्त)।
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:dest
append:NO];
[operation.outputStream open];
[operation start];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFCompoundResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/octet-stream"];
AFHTTPRequestOperation *operation = [manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (responseObject) {
// your code here
} else {
// your code here
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
[operation start];
// manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject: @ "application/ओकटेट धारा"]; आप क्या उम्मीद
Documentation page अनुभाग के साथ 'एक डाउनलोड टास्क बनाना' उदाहरण है के आधार पर भिन्न कर सकते हैं:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];
एनबी! आईओएस 7+ के साथ कोड काम (AFNetworking 2.5.1 के साथ परीक्षण)
मदद करें जब मैं वीडियो डाउनलोड करता हूं और डाउनलोड पूर्ण होने पर वापस क्लिक करता हूं। और फिर मैं उस वीडियो पर क्लिक करता हूं उस समय मुझे यह त्रुटि मिलती है => MediaPlayerErrorDomain Code = -11800 ... तो कृपया मेरी मदद करें –
AFNetworking दस्तावेज़ों से। अपने दस्तावेज़ों में लोड की गई फ़ाइल में सहेजें। AFNetworking 3।^ (NSInteger bytesWritten, लंबे totalBytesWritten, लंबे totalBytesExpectedToRead) { फ्लोट: फ़ाइल की प्रगति अपलोड [आपरेशन setDownloadProgressBlock वापस जाने के लिए // सेटअप अपलोड ब्लॉक: 0
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {
NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]];
} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {
NSLog(@"File downloaded to: %@", filePath);
}];
[downloadTask resume];
- 1. कई फाइलें डाउनलोड करने के लिए AFNetworking
- 2. AFNetworking - फ़ाइल डाउनलोड करने के लिए AFHTTPRequestOperation का उपयोग करना?
- 3. आईओएस में AFNetworking के साथ एक फ़ाइल/छवि डाउनलोड करें?
- 4. इंटरनेट से फ़ाइलों को डाउनलोड करने और आईफोन पर 'दस्तावेज़' में सहेजने के लिए कैसे?
- 5. रेल: http से फ़ाइल डाउनलोड करने और उसे डेटाबेस में सहेजने के लिए कैसे करें
- 6. कैसे asp.net में एक फ़ाइल डाउनलोड लागू करने के लिए
- 7. फ़ाइल को कंसोल करने और सहेजने के लिए प्रतिक्रिया शीर्षलेख मुद्रित करने के लिए कैसे?
- 8. फ़ाइल को सहेजने के लिए
- 9. डाउनलोड करने के लिए ब्राउज़र में फ़ाइल कैसे भेजें?
- 10. MSYS के साथ फ़ाइल कैसे डाउनलोड करें?
- 11. विभिन्न फ़ाइल स्वरूपों को सहेजने और लिखने के लिए पैटर्न
- 12. जावास्क्रिप्ट में डाउनलोड करने के लिए मैं गतिशील रूप से दस्तावेज़ कैसे बना सकता हूं?
- 13. AFNetworking के लिए टाइमआउट
- 14. AFNetworking
- 15. फ़ाइल डाउनलोड ट्रिगर करने के लिए सही तरीका (PHP में)?
- 16. xmldocument को स्ट्रीम में सहेजने के लिए कैसे करें
- 17. AFNetworking के साथ सत्र कैसे प्रबंधित करें?
- 18. फ़ाइल डाउनलोड करने के लिए HttpWebRequest का उपयोग कैसे करें
- 19. कैसे कैसे फ़ाइल बनाने और phonegap का उपयोग एंड्रॉयड Sdcard में फ़ाइल सहेजने के लिए phonegap
- 20. PHP - फ़ाइल डाउनलोड करने के लिए कैसे मजबूर करें?
- 21. एमेकिंग एन्कोडिंग खोलने और सहेजने के लिए
- 22. मैं ASP.NET के साथ एक XML फ़ाइल कैसे बना सकता हूं और इसे डाउनलोड करने के लिए संकेत देता हूं?
- 23. फ़ाइल डाउनलोड करने के लिए संवाद बॉक्स सहेजें, क्लाइंट को ASP.NET सर्वर से फ़ाइल सहेजना
- 24. दस्तावेज़ निर्देशिका
- 25. सी/सी ++ में WinHTTP के साथ फ़ाइल कैसे डाउनलोड करें?
- 26. एंड्रॉयड कैसे दस्तावेज़ निर्देशिका
- 27. AFNetworking + बड़ी डाउनलोड फ़ाइलें + डाउनलोड फिर से शुरू करें
- 28. डाउनलोड के लिए एक पाठ फ़ाइल बनाएँ
- 29. symfony2 में जेनरेट किए गए दस्तावेज़ डाउनलोड करने के लिए लिंक कैसे बनाएं?
- 30. कैसे डाउनलोड करने और अनुरोध
तुम भी एक प्रगति ब्लॉक जोड़ सकते हैं प्रगति = कुल बाइट्स लिखित/(फ्लोट) कुल बाइट्सएक्सेटेड टू रीड; एनएसएलओजी (@ "डाउनलोड प्रतिशत:% एफ %%", प्रगति * 100); }]; – Climbatize
सावधान रहें कि उपरोक्त कोड सर्वर से आउटपुट स्ट्रीम में कोई प्रतिक्रिया डाउनलोड करेगा, इसलिए यदि सर्वर स्टेटस कोड 404 के साथ प्रतिक्रिया करता है, तो 404 पेज निर्दिष्ट पथ पर सहेजा जाएगा। आपको ऑपरेशन.response.statusCode के लिए सफलता ब्लॉक पर जांच करनी होगी। – leolobato
यह आईओएस 6 पर मेरे लिए काम किया। धन्यवाद @mattt –