将base64编码的图像上传到Mamp服务器


upload base64 encoded image to Mamp server

我正在将base64编码格式的图像发送到服务器使用以下方法

//用于上传图像。。。。。。。。。。。。。。。。。。。。。。

- (void)ImageUpload:(UIImage *)image
{
    NSData *imageData = UIImagePNGRepresentation(image);
    NSString *urlString=@"http://192.168.77.145/uploadImage.php";
    NSURL *url = [NSURL URLWithString:urlString];
    NSString *base64ImageString = [imageData base64EncodedStringWithOptions:kNilOptions];  // iOS 7+
    base64ImageString = [base64ImageString stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];
    NSString *jsonReqString = [[NSString alloc] initWithFormat:@"{'"photo'":'"%@'",'"imageExtension'":'"%@'"}", base64ImageString,@"123"];

    NSString *post =[[NSString alloc] initWithFormat:@"request=%@",jsonReqString];
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]];
    [request setURL:url];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    //[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        if (!data)
        {
            NSLog(@"wifi error");
            NSLog(@"sendAsynchronousRequest error: %@", connectionError);
            return ;
        }
        else
        {
            NSString *returnString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            }
        }
    }];
}

但我并没有得到base64字符串到服务器。参数photo和imageextension都为空。

这是我的服务器端代码

  <?php
$base = $_POST['photo'];
echo $base;
$filename = $_POST['imageExtension'];
echo $filename;
// Decode Image
$binary=base64_decode($base);
header('Content-Type: bitmap; charset=utf-8');
$file = fopen('uploadedimages/'.$filename, 'wb');
// Create File
fwrite($file, $binary);
fclose($file);
echo 'Image upload complete, Please check your php file directory';
 ?>

感谢的帮助

问题出现在服务器端的第二行

您正在尝试获取密钥"照片"的价值

$base = $_POST['photo'];

你需要换一下

  $base = $_POST['request'];

之后你需要添加以下代码

$baseImg = json_decode($base, true);
$filename = $baseImg["imageExtension"];
$tmpImg = $baseImg["photo"];
$binary=base64_decode($tmpImg);