Описание моей проблемы на самом деле находится в вопросе заголовка. Я новичок в веб-технологиях, поэтому это поведение для меня немного поразительно. Почему вызывается блок отказов, хотя загрузка изображений завершена с успехом? Более того, я искал ответ на свой вопрос о SoF и применил некоторые решения, но эта ошибка все еще появляется. Пожалуйста, помогите, если это возможно. Заранее спасибо.AFNetworking 2.0 Ошибка POST + PHP, хотя загрузка выполнена успешно
ЦЕЛЬ - C:
- (void)upload {
NSString *fileName = [NSString stringWithFormat:@"%ld%c%c.jpg", (long)[[NSDate date] timeIntervalSince1970], arc4random_uniform(26) + 'a', arc4random_uniform(26) + 'a'];
NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"image" ofType:@"jpg"];
NSData *data = UIImagePNGRepresentation([UIImage imageWithContentsOfFile:imagePath]);
NSString *URLString = @"http://myServer/myAppFolder";
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager manager] initWithBaseURL:[NSURL URLWithString:URLString]];
AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
[manager setResponseSerializer:responseSerializer];
[manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObject:@"text/html"]];
AFHTTPRequestOperation *operation = [manager POST:@"upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:data name:@"uploadedfile" fileName:fileName mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Failure/%@,/%@", error, operation.responseString); //error comes from here
}];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
NSLog(@"uploading...");
}];
}
upload.php:
<?php
$filename="uploaded";
$target_path = "uploads/";
$target_path = $target_path . basename($_FILES['uploadedfile']['name']);
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "The file ". basename($_FILES['uploadedfile']['name'])." has been uploaded";
} else {
echo "There was an error uploading the file, please try again!";
}
?>;
Я получаю эту ошибку:
Failure/Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)" (Invalid value around character 0.) UserInfo=0x8a633e0 {NSDebugDescription=Invalid value around character 0.},/The file 1389046572lb.jpg has been uploaded;
Не кодировщик ios, но «Недопустимое значение вокруг символа 0» для вашего сообщения «Файл ...» предполагает, что какао ожидает какой-то другой текст, который вы не отправляете. –
Почему вы используете 'AFJSONResponseSerializer'? Ваш PHP не возвращает JSON ... Попробуйте с помощью '[AFResponseSerializer serializer]' ... –
Я попытался воспроизвести JSON, сделанный json_encode в моем .php-файле. Но в конце появилась ошибка об мусоре. Я понял, что в сериализаторе может быть проблема, хотя и не знал об AFHTTPResponseSerializer, который на самом деле является ответом. Спасибо rokjarc за осуждение меня! Также спасибо Marc за ответ :-) – Neru