Я отправляю данные из IOS в php-скрипт. Поскольку переход от запроса синхронизации к Async мне не удалось заставить загрузку работать.
ОК, поэтому у меня есть следующие ошибки в моем журнале веб-сервера
[Sat Nov 28 13:18:56 2015] [error] [client 80.6.199.219:38875] AH01215: PHP Deprecated: Comments starting with '#' are deprecated in public_html/iphone2/php.ini on line 1 in Unknown on line 0: public_html/iphone2/UploadImage.php
[Sat Nov 28 13:18:56 2015] [error] [client 80.6.199.219:38875] AH01215: PHP Notice: Undefined index: user_id in public_html/iphone2/UploadImage.php on line 8: public_html/iphone2/UploadImage.php
[Sat Nov 28 13:18:56 2015] [error] [client 80.6.199.219:38875] AH01215: PHP Notice: Undefined index: RequestID in public_html/iphone2/UploadImage.php on line 9: public_html/iphone2/UploadImage.php
[Sat Nov 28 13:18:56 2015] [error] [client 80.6.199.219:38875] AH01215: PHP Notice: Undefined index: base64 in public_html/iphone2/UploadImage.php on line 10: public_html/iphone2/UploadImage.php
500kgiveaway.co.uk [Sat Nov 28 13:18:56 2015] [error] [client 80.6.199.219:38875] AH01215: PHP Notice: Undefined index: base64_thumb in ublic_html/iphone2/UploadImage.php on line 11: public_html/iphone2/UploadImage.php
[Sat Nov 28 13:18:56 2015] [error] [client 80.6.199.219:38875] AH01215: PHP Notice: Undefined index: ImageName in public_html/iphone2/UploadImage.php on line 14: public_html/iphone2/UploadImage.php
[Sat Nov 28 13:18:56 2015] [error] [client 80.6.199.219:38875] AH01215: PHP Notice: Undefined index: ImageName in /home/sites/500kgiveaway.co.uk/public_html/iphone2/UploadImage.php on line 13: /home/sites/500kgiveaway.co.uk/public_html/iphone2/UploadImage.php
500kgiveaway.co.uk [Sat Nov 28 13:18:56 2015] [error] [client 80.6.199.219:38875] AH01215: PHP Notice: Undefined index: ImageName in /home/sites/500kgiveaway.co.uk/public_html/iphone2/UploadImage.php on line 30: /home/sites/500kgiveaway.co.uk/public_html/iphone2/UploadImage.php
500kgiveaway.co.uk [Sat Nov 28 13:18:56 2015] [error] [client 80.6.199.219:38875] AH01215: PHP Notice: Undefined index: ImageName in public_html/iphone2/UploadImage.php on line 42: public_html/iphone2/UploadImage.php
500kgiveaway.co.uk [Sat Nov 28 13:18:56 2015] [error] [client 80.6.199.219:38875] AH01215: PHP Warning: file_put_contents(upload/images/): failed to open stream: Is a directory in public_html/iphone2/UploadImage.php on line 42: public_html/iphone2/UploadImage.php
Вот код для отправки запроса на отправку
- (void)uploadToServer:(NSString *)base64Large thumb:(NSString *)base64Thumb {
NSString *poststring = @"";
long currentTime = (long)(NSTimeInterval)([[NSDate date] timeIntervalSince1970]);
NSString *currentTimeString = [NSString stringWithFormat:@"%ld",currentTime];
NSString *fileName = [currentTimeString stringByAppendingString:@".jpg"];
NSString *postImageName = @"ImageName=%imagename%&";
postImageName =[postImageName stringByReplacingOccurrencesOfString:@"%imagename%" withString:fileName];
poststring = [poststring stringByAppendingString:postImageName];
NSString *postUserID = @"user_id=%UserID%&";
postUserID =[postUserID stringByReplacingOccurrencesOfString:@"%UserID%" withString:@"2"];
poststring = [poststring stringByAppendingString:postUserID];
NSString *postRequestListID = @"RequestID=%RLID%&";
postRequestListID =[postRequestListID stringByReplacingOccurrencesOfString:@"%RLID%" withString:self.golbalRequestListID];
poststring = [poststring stringByAppendingString:postRequestListID];
NSString *postBase64 = @"base64=%B64%&";
postBase64 =[postBase64 stringByReplacingOccurrencesOfString:@"%B64%" withString:base64Large];
postBase64 = [postBase64 stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
poststring = [poststring stringByAppendingString:postBase64];
NSString *postBase64thumb = @"base64_thumb=%B64T%&";
postBase64thumb =[postBase64thumb stringByReplacingOccurrencesOfString:@"%B64T%" withString:base64Thumb];
postBase64thumb = [postBase64thumb stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
poststring = [poststring stringByAppendingString:postBase64thumb];
//create the request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"iphone2/UploadImage.php"]];
//Specify that it will be a post request
request.HTTPMethod = @"POST";
//This is how we set header fields
[request setValue:@"application/xml: charset=utf-8" forHTTPHeaderField:@"Content-Type"];
//convert your data and set your requests httpbody property
NSData *requestBodyData = [poststring dataUsingEncoding:NSUTF8StringEncoding];
request.HTTPBody = requestBodyData;
//create url connection and fire request
NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
}
Почтовый запрос содержит несколько записей для базы данных и 2 изображения в base64 (1 полноразмерное изображение размером около 5-7 мб и миниатюра versioin (1-2 МБ))
Как я уже говорил, это прекрасно работает при использовании метода Sync.
Я не получаю никаких ошибок в xcode, и когда я контролирую метод didSendBodyData, я вижу приложение, отправляющее данные.
Я действительно думал, что это может быть проблемой с почтовым запросом, однако я не могу найти способ проверить, действительно ли это. Я также понимаю, что это может быть проблема с объемом данных, которые я отправлял, поэтому я увеличил пост-лимит до 20 МБ
честно говоря, я не могу подумать, что еще может быть проблемой.
Оказывается, это была проблема со значением поля заголовка
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
Влияние было взято из следующего сообщения
Ошибка запроса ASIHTTPRequest при работе через HTTPClient
Надеюсь, это поможет кому-то еще