Я пытаюсь выполнить простую задачу загрузки изображения на сервер из приложения iOS. Однако после запуска я получаю следующее сообщение об ошибке:Ошибка при загрузке изображения из приложения iOS на сервер
Error: Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
Любая идея, почему? Ниже приведен мой код для клиентской и серверной сторон соответственно.
App сторона код:
-(void) uploadPhoto: (UIImage*) image{
NSString *urlString = @"myServerDNS.com/upload.php";
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
NSData *imageData = UIImageJPEGRepresentation(image, 0.8);
NSDictionary *parameters = @{@"foo":@"bar"};
[manager POST:urlString
parameters:parameters
constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
{[formData appendPartWithFormData:imageData name:@"file"];}
success:^(AFHTTPRequestOperation *operation, id responseObject)
{NSLog(@"Success: %@", responseObject);}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{NSLog(@"Error: %@", error);}
];
}
сервера код на стороне PHP:
<?php
$foo = $_POST["foo"];
$target_dir = "Folder/" . basename($_FILES["file"]["name"]);
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_dir))
{
echo json_encode([
"Message" => "The file ". basename($_FILES["file"]["name"]). " has been uploaded.",
"Status" => "OK"
]);
} else {
echo json_encode([
"Message" => "Sorry, there was an error uploading your file.",
"Status" => "Error"
]);
}
?>
Также добавьте приемлемыеконтинентальные типы: «application/html» и «text/plain». –
Я попытался добавить эти два типа контента и все еще не работал. Как правило, такая ошибка возникает из-за проблемы на стороне клиента или на стороне сервера? Что это за текст JSON, о котором говорит сообщение об ошибке? – Evan
Мое будет сказано, что ваш ответ не в формировании JSON. –