iOS到PHP图片上传

时间:2014-10-07 15:15:29

标签: php ios

我正在尝试通过php5从IOS7上传图像到我的服务器。

iOS代码

NSString *urlString = @"http://<domain>/conAPI/imageAPI.php";
NSData *imageData = UIImagePNGRepresentation(venueImageView.image);

NSMutableURLRequest *requestImage = [[NSMutableURLRequest alloc] init];
    [requestImage setURL:[NSURL URLWithString:urlString]];
    [requestImage setHTTPMethod:@"POST"];

NSString *boundary = @"0xKhTmLbOuNdArY";

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[requestImage addValue:contentType forHTTPHeaderField: @"Content-Type"];

NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"uploadedimage\"; filename=\"V%@.png\"\r\n",[userDictioanry objectForKey:@"user_id"]] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[requestImage setHTTPBody:body];

NSData *returnData = [NSURLConnection sendSynchronousRequest:requestImage returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"Image Return String: %@", returnString);

和我的php

ini_set('log_errors',1);
$uploaddir = '/var/www/html/memberImages/';
print_r($_FILES);
$file = $_FILES['uploadedimage']['name'];
$uploadfile = $uploaddir . $file;

if (file_exists($uploaddir) && is_writable($uploaddir)) {
    if (move_uploaded_file($_FILES['uploadedimage']['tmp_name'], $uploadfile)) {
       echo 'DONE '.$file;
    }else {
        echo "error ".$_FILES['uploadedimage']['tmp_name'].' '.$uploadfile;
    }
}else {
    if (!file_exists($uploaddir)){
        echo 'upload dir does not exist '.getcwd().' '.$uploadfile.'\n';
    }
    if(!is_writable($uploaddir)) {
        echo 'Upload directory is not writable.'.'\n';
    }
}

在任何情况下,我都会得到错误&#34;返回两个文件名。 error.log什么都没显示。 root用户已对目录和所有父级进行读/写操作。

请你指出我逻辑中的简单缺陷。如果这不涉及第三方方法,我也将不胜感激。在这种情况下,有正当理由不使用AFNetworking。

提前致谢 克里斯

2 个答案:

答案 0 :(得分:0)

上传路径错误,具体取决于脚本的更改位置

$uploaddir = '/var/www/html/memberImages/';

$uploaddir = 'memberImages/';

答案 1 :(得分:0)

这对代码来说不是问题.....

目录membersImages有点腐败。权限显示776和所有者显示为root用户,root用户可以CD进入目录,但LS显示零内容。退出和rmdir失败,因为目录不为空。递归删除工作,MKDIR和上传工作。

让我变得奇怪.....