gpt4 book ai didi

用于从 iOS 应用程序接收图像的 PHP Rest API

转载 作者:行者123 更新时间:2023-11-29 02:00:25 27 4
gpt4 key购买 nike

我是 iOS 开发的新手,目前正在开发一个 iOS 应用程序,我需要将 iOS 中的图像发送到用 PHP 编写的 REST API。下面是我将图像发送到 PHP 服务器的请求在 iOS 中的样子:

- (void)uploadImage {
NSString *urlString = @"http://www.private.com/uploadimage.php";
NSURL *url = [NSURL URLWithString:urlString];

NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0f];
[urlRequest setHTTPMethod:@"PUT"];

NSURLSession *session = [NSURLSession sharedSession];

NSData *imageData = UIImageJPEGRepresentation(self.imageView.image, 0.3f);
[[session uploadTaskWithRequest:urlRequest fromData:imageData completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if(error) {
NSLog(@"%@",error);
}
}] resume];

}

在我们继续之前,这看起来正确吗?如果正确,我可以编写什么 PHP 代码来接收正在发送的图像,然后将其上传到某个指定的文件夹?我环顾四周,但没有找到任何处理 iOS 的 NSURLSession 的 PHP。

最佳答案

示例图片上传php代码;

function multiProfileUpload_($target_dir,$files,$user_id)
{
for($i=0; $i < count($files); $i++) {
$uploadOk = 1;
$filename = uniqid();
$imageFileType = pathinfo($files["fileToUpload"]["name"],PATHINFO_EXTENSION);
$target_file = $target_dir . $filename.".".$imageFileType;
$name=$filename.".".$imageFileType;

move_uploaded_file($files["fileToUpload"]["tmp_name"], $target_file);
$profile_pic = BASE_PATH.$target_dir.$name;
$query = "UPDATE user_profile SET profile_pic = '$profile_pic' where user_id = $user_id;";
mysql_query($query);
$result['status'] = "success";
$result['path'] = $profile_pic;
}
return $result;
}

Api 入口点应该是这样的;

if(@$_REQUEST['apiEntry']=="update_profile_image")
{
if(!isset($_FILES['fileToUpload']) ||$_FILES['fileToUpload']['error'] == UPLOAD_ERR_NO_FILE)
{
$data['status'] = "error";
$data['message'] = "Error on uploading files";
}else
{
$data = multiProfileUpload_("images/profile/",$_FILES,$_REQUEST['user_id']);
}
echo json_encode($data);
}

使用 3rd 方库进行网络连接比 NSURLConnection 本身要方便得多,因为它们都是基于它的。示例使用 AFNetworking v2.0

- (void)updateProfileImage{
NSMutableDictionary *parameters = [NSMutableDictionary dictionaryWithObjectsAndKeys:
self.user_id, @"user_id",
nil];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager alloc] init];
manager.securityPolicy.allowInvalidCertificates = YES;//This is for https
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

[manager POST:[NSString stringWithFormat:@"%@?apiEntry=update_profile_image",BASE_URL] parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:UIImageJPEGRepresentation(imgView.image, 1.0f) name:@"fileToUpload" fileName:@"photo.jpg" mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@",operation.request);
NSDictionary *responseJson = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil];
NSLog(@"%@",responseJson);
if ([[responseJson objectForKey:@"status"] isEqualToString:@"success"]) {
//do something
}else{
//do some other thing
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"%@",error);
}];

关于用于从 iOS 应用程序接收图像的 PHP Rest API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30445830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com