Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在iOS/Objective-C上通过一个请求向服务器发送字符串和图像、音频、视频_Php_Ios_Objective C_Xcode_Httprequest - Fatal编程技术网

Php 在iOS/Objective-C上通过一个请求向服务器发送字符串和图像、音频、视频

Php 在iOS/Objective-C上通过一个请求向服务器发送字符串和图像、音频、视频,php,ios,objective-c,xcode,httprequest,Php,Ios,Objective C,Xcode,Httprequest,我想发送信息以及多媒体文件,如果发现。所有文件都保存在NSString和NSData中,只需一个HTTP请求。信息和多媒体文件未成功附加到正文中。我可以成功地发送信息,但不能在一个HTTP请求中发送多媒体文件 iOS文件 PHP文件 我使用AFN网络,这是有效的 AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; NSDictionary *parameters = @{@"valu

我想发送信息以及多媒体文件,如果发现。所有文件都保存在NSString和NSData中,只需一个HTTP请求。信息和多媒体文件未成功附加到正文中。我可以成功地发送信息,但不能在一个HTTP请求中发送多媒体文件

iOS文件 PHP文件
我使用AFN网络,这是有效的

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

NSDictionary *parameters = @{@"value1": @"value1",
                             @"value2": @"value2",
                             @"value3": @"value1",
                             };
// BASIC AUTH (if you need):
manager.securityPolicy.allowInvalidCertificates = YES;
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
//[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"foo" password:@"bar"];
// BASIC AUTH END

NSString *URLString = @"php file";

/// !!! only jpg, have to cover png as well
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager POST:URLString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {


    if (image) {
        [formData appendPartWithFileData:image name:@"image" fileName:[NSString stringWithFormat:@"%@.jpg",dateString] mimeType:@"image/jpeg"];
        NSLog(@"image: %@",image);
    }

    if (video) {
        [formData appendPartWithFileData:video name:@"video" fileName:[NSString stringWithFormat:@"%@.mp4",dateString] mimeType:@"video/quicktime"];
        NSLog(@"video: %@",video);
    }

    if (audio) {
        [formData appendPartWithFileData:audio name:@"audio" fileName:[NSString stringWithFormat:@"%@.mp3",dateString] mimeType:@"audio/m4a"];
        NSLog(@"audio: %@",audio);
    }
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Failure" message:@"Sending Failure" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
    NSLog(@"Failure %@, %@", error, operation.responseString);
}];

[self dismissViewControllerAnimated:NO completion:nil];

希望这能起作用

客户端代码在哪里?我用它上传,但它不起作用。发布的PHP代码无效:有19{和20}。
//My PHP file is like this:
<?php

        // Check for proper request
        if (isset($_POST['value1'])) {
            $value1 = $_POST['value1'];
            $value2 = $_POST['value2'];
            $value3 = $_POST['value3'];

            // Insert data into the info table

            $query = "INSERT INTO `info` (`value1`, `value2`, `value3) VALUES ('$value1', '$value2', '$value3')";
            $result = mysql_query($query);
            if ($result) {
                echo "Successfully sent your data!\n";

                $target_path = "multimedia/";

                // Check for image
                $prefix="X".  time();
                if (isset($_FILES['image']['name'])) {
                    $target_path1 = $target_path . basename($prefix.$_FILES['image']['name']);
                    try {
                        if (!move_uploaded_file($_FILES['image']['tmp_name'], $target_path1)) {
                            throw new Exception('Could not move file');
                        }
                        else {
                           insertMultimedia($value1, 3, $prefix.$_FILES['image']['name'], "Image Uploaded!\n", "image Not Uploaded!\n");
                        }
                    }
                    catch (Exception $ex) {
                        echo "Image Not Uploaded!\n";
                    }
                }

                // Check for audio
                if (isset($_FILES['audio']['name'])) {
                    $target_path2 = $target_path . basename($prefix.$_FILES['audio']['name']);
                    try {
                        if (!move_uploaded_file($_FILES['audio']['tmp_name'], $target_path2)) {
                            throw new Exception('Could not move file');
                        }
                        else {
                            insertMultimedia($value1, 2, $prefix.$_FILES['audio']['name'], "Audio Uploaded!\n", "Audio Not Uploaded!\n");
                        }
                    }
                    catch (Exception $ex) {
                        echo "Audio Not Uploaded!\n";
                    }
                }

                // Check for video
                if (isset($_FILES['video']['name'])) {
                    $target_path3 = $target_path . basename($prefix.$_FILES['video']['name']);
                    try {
                        if (!move_uploaded_file($_FILES['video']['tmp_name'], $target_path3)) {
                            throw new Exception('Could not move file');
                        }
                        else {
                            insertMultimedia($value1, 1, $prefix.$_FILES['video']['name'], "Video Uploaded!\n", "Video Not Uploaded!\n");
                        }
                    }
                    catch (Exception $ex) {
                        echo "Video Not Uploaded exception!\n";
                    }
                }
            }
        }
        else {
            echo "Sending Failure!";
        }
    }
    else {
        echo 'Invalid Request';
    }
?>
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

NSDictionary *parameters = @{@"value1": @"value1",
                             @"value2": @"value2",
                             @"value3": @"value1",
                             };
// BASIC AUTH (if you need):
manager.securityPolicy.allowInvalidCertificates = YES;
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
//[manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"foo" password:@"bar"];
// BASIC AUTH END

NSString *URLString = @"php file";

/// !!! only jpg, have to cover png as well
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager POST:URLString parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {


    if (image) {
        [formData appendPartWithFileData:image name:@"image" fileName:[NSString stringWithFormat:@"%@.jpg",dateString] mimeType:@"image/jpeg"];
        NSLog(@"image: %@",image);
    }

    if (video) {
        [formData appendPartWithFileData:video name:@"video" fileName:[NSString stringWithFormat:@"%@.mp4",dateString] mimeType:@"video/quicktime"];
        NSLog(@"video: %@",video);
    }

    if (audio) {
        [formData appendPartWithFileData:audio name:@"audio" fileName:[NSString stringWithFormat:@"%@.mp3",dateString] mimeType:@"audio/m4a"];
        NSLog(@"audio: %@",audio);
    }
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Failure" message:@"Sending Failure" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];
    NSLog(@"Failure %@, %@", error, operation.responseString);
}];

[self dismissViewControllerAnimated:NO completion:nil];