Php 将图像从iOS应用程序上载到服务器时出错

Php 将图像从iOS应用程序上载到服务器时出错,php,ios,server,Php,Ios,Server,我正在尝试做一个简单的任务,从iOS应用程序上传一个图像到服务器。但是,运行后我收到以下错误消息: 错误:Error Domain=NSCOCAERRORDOMAIN Code=3840“JSON文本未以数组或对象开头,允许未设置片段的选项。”UserInfo={NSDEBUGSCRIPTION=JSON文本未以数组或对象开头,允许未设置片段的选项。} 知道为什么吗?下面是我分别针对客户端和服务器端的代码 应用程序端代码: -(void) uploadPhoto: (UIImage*) imag

我正在尝试做一个简单的任务,从iOS应用程序上传一个图像到服务器。但是,运行后我收到以下错误消息:

错误:Error Domain=NSCOCAERRORDOMAIN Code=3840“JSON文本未以数组或对象开头,允许未设置片段的选项。”UserInfo={NSDEBUGSCRIPTION=JSON文本未以数组或对象开头,允许未设置片段的选项。}

知道为什么吗?下面是我分别针对客户端和服务器端的代码

应用程序端代码:

-(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
$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"
]);
}
?>
-(void)上传照片:(UIImage*)图像{
NSString*urlString=@“myServerDNS.com/upload.php”;
AFHTTPRequestOperationManager*manager=[AFHTTPRequestOperationManager];
manager.responseSerializer.acceptableContentTypes=[NSSet setWithObject:@“text/html]”;
NSData*imageData=UIIMAGEJPEG表示法(图像,0.8);
NSDictionary*参数=@{@“foo”:@“bar”};
[经理职务:urlString]
参数:参数
构造体WithBlock:^(id formData)
{[formData appendPartWithFormData:imageData名称:@“文件”];}
成功:^(AFHTTPRequestOperation*操作,id响应对象)
{NSLog(@“Success:%@”,responseObject);}
失败:^(AFHTTPRequestOperation*操作,NSError*错误)
{NSLog(@“Error:%@”,Error);}
];
}
服务器端php代码:

-(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
$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"
]);
}
?>

好的,很抱歉我意识到这是一个愚蠢的错误导致了这个问题。这仅仅是因为我添加了一个
echo“helloworld”在php脚本的开头,导致它触发JSON文本错误。删除了它,错误消息消失了


与问题中所述的错误消息不对应,但代码中存在的另一个错误是我使用了
appendPartWithFormData
而不是
appendPartWithFileData
。更改为后者后,图像上载到服务器即可工作

还添加了可接受的内容类型:“application/html”和“text/plain”。我尝试了添加这两种内容类型的建议,但仍然没有成功。这种错误通常是由于客户端或服务器端的问题造成的吗?错误消息所说的JSON文本是什么?我的意思是,您的响应不是JSON格式的。