繁体   English   中英

将图像从iOS应用上传到服务器时出错

[英]Error with uploading image from iOS app to server

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

错误:错误域= NSCocoaErrorDomain代码= 3840“ JSON文本不是以数组或对象开头,并且没有允许设置片段的选项。” UserInfo = {NSDebugDescription = 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代码:

<?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 "hello world"; 在php脚本的开头,导致其触发JSON文本错误。 将其删除,错误消息消失。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM