का उपयोग कर बड़ी छवियों को अपलोड करना मैं JSON
का उपयोग कर किसी सर्वर पर एक छवि अपलोड करने के लिए इस फ़ंक्शन का उपयोग कर रहा हूं। ऐसा करने के लिए, मैं पहली बार छवि को NSData
पर परिवर्तित करता हूं और फिर Base64
का उपयोग करके NSString
पर परिवर्तित करता हूं। यह विधि ठीक काम करती है जब छवि बहुत बड़ी नहीं होती है, लेकिन जब मैं 2 एमबी छवि अपलोड करने का प्रयास करता हूं, तो यह क्रैश हो जाता है।बेस 64 और JSON
समस्या यह है कि सर्वर को मेरी छवि प्राप्त नहीं होती है, भले ही didReceiveResponse
विधि को didReceiveData
कहा जाता है जो (null)
देता है। सबसे पहले मैंने सोचा कि यह एक समय मुद्दा था, लेकिन इसे 1000.0 तक भी सेट करना अभी भी काम नहीं करता है। कोई उपाय? आपके समय के लिए धन्यवाद!
- (void) imageRequest {
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://www.myurltouploadimage.com/services/v1/upload.json"]];
NSString *docDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *path = [NSString stringWithFormat:@"%@/design%i.png",docDir, designNum];
NSLog(@"%@",path);
NSData *imageData = UIImagePNGRepresentation([UIImage imageWithContentsOfFile:path]);
[Base64 initialize];
NSString *imageString = [Base64 encode:imageData];
NSArray *keys = [NSArray arrayWithObjects:@"design",nil];
NSArray *objects = [NSArray arrayWithObjects:imageString,nil];
NSDictionary *jsonDictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonDictionary options:kNilOptions error:&error];
[request setHTTPMethod:@"POST"];
[request setValue:[NSString stringWithFormat:@"%d",[jsonData length]] forHTTPHeaderField:@"Content-Length"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:jsonData];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
NSLog(@"Image uploaded");
}
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"didReceiveResponse");
}
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"%@",[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]);
}
आप php वेबपृष्ठ पर किसी भी लॉग जोड़ दिया है, कम से कम, यूआरएल कहा जाता है को देखने के लिए? एक फ़ाइल लॉग या एसक्यूएल लॉग की तरह? – Vinzius
दरअसल, सर्वर-साइड प्रोग्रामर ने मुझे बताया कि यदि वेबसाइट को कोई डेटा प्राप्त होता है तो प्रतिक्रिया हमेशा वापस आती है। तो, मेरा निष्कर्ष यह है कि उसे अनुरोध भी प्राप्त नहीं होता है। –
इसके अलावा: अक्षर का उपयोग करना चीजों को आसान/अधिक स्पष्ट बनाता है: 'NSDictionary * jsonDictionary = @ {@" design ": imageString};' – zaph