2014-10-07 92 views
0

我想通過php5從IOS7上傳圖片到我的服務器。iOS to PHP圖片上傳

的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'; 
    } 
} 

在任何情況下,我得到 「錯誤」 與兩個文件名返回。 error.log不顯示任何內容。 root用戶已經讀取/寫入目錄和所有父母。

請你指出我邏輯中的簡單缺陷。如果這不涉及第三方方法,我也會很感激。在這種情況下沒有使用AFNetworking是有正當理由的。

在此先感謝 克里斯

回答

0

這是沒有用的代碼有問題。 ...

目錄membersImages是一些多麼腐敗。權限顯示776和所有者顯示爲root用戶,root用戶可以將CD放入目錄中,但LS顯示的內容爲零。退出和rmdir失敗,因爲目錄不是空的。遞歸刪除工作,MKDIR和上傳作品。

顏色我bizarred .....

0

上傳路徑是錯誤的,這取決於您的腳本是改變

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

$uploaddir = 'memberImages/'; 
+0

我的腳本是在/ var/www/html等/ conAPI /我memberImage目錄爲/ var/www/html等/ memberImages /我曾嘗試explicite在/ var/WWW/html/memberImages和我也試過../memberImages我通過file_exits測試和可寫入測試,所以腳本看到的圖像目錄,並可以寫入它,文件具有質量(約85K),並存在於tmp文件空間,但移動只是說沒有error.log條目的錯誤。 – 2014-10-07 15:45:52

+0

@ChrisHardaker所以你需要'../ memberImages /' – meda 2014-10-07 15:46:32