2014-09-14 5 views
1

첫 번째 iPhone 앱에서 이미지를 업로드하려고하는데 작동하지 않습니다. 나는 몇 가지 예제와 튜토리얼을 따라 왔지만 아직 이해하지 못했다. 내 코드에 어떤 문제가 있는지 말해 줄 수 있습니까? 이미지가 Xcode에 저장되지 않았습니다.

문제

나는 다음과 같은 오류가납니다 있다는 것입니다 :

  • 파일이 너무 큽니다.
  • 내가 파일의 이름을 확인할 때 : "http://www.example.com/images/.jpg"처럼 이름이 없습니다.
  • 이미지는/images /에 저장되지 않습니다.

ViewController.m

- (IBAction)uploadPhoto:(UIButton *)sender { 

    NSLog(@"Photo enviada"); 

    NSData *imageData = UIImageJPEGRepresentation(_imageView.image, 90); 
    NSString *urlString = @"http://example.com/upload.php"; 

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 

    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:@"POST"]; 

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

    NSMutableData *body = [NSMutableData data]; 
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\".jpg\"\r\n" 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]]; 
    [request setHTTPBody:body]; 

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

    NSLog(returnString); 
} 

upload.php로

<?php 
$uploaddir = '/images/';  //Uploading to same directory as PHP file 
$file = basename($_FILES['userfile']['name']); 
$uploadFile = $file; 
$randomNumber = rand(0, 99999); 
$newName = $uploadDir . $randomNumber . $uploadFile; 


if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { 
    echo "Temp file uploaded. \r\n"; 
} else { 
    echo "Temp file not uploaded. \r\n"; 
} 

if ($_FILES['userfile']['size']> 300000) { 
    exit("Your file is too large."); 
} 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $newName)) { 
    $postsize = ini_get('post_max_size'); //Not necessary, I was using these 
    $canupload = ini_get('file_uploads'); //server variables to see what was 
    $tempdir = ini_get('upload_tmp_dir'); //going wrong. 
    $maxsize = ini_get('upload_max_filesize'); 
    echo "http://www.example.com/images/{$file}" . "\r\n" . $_FILES['userfile']['size'] . "\r\n" . $_FILES['userfile']['type'] ; 
} 
?> 

답변

0

귀하의 파일이 너무 큽니다. "http://www.example.com/images/.jpg"처럼에게 그것은이 없습니다 :

스크립트의 첫 번째 것은 내가 말하는 파일의 이름을 확인할 때 최대 크기

; Maximum allowed size for uploaded files. 
upload_max_filesize = 5M 

; Must be greater than or equal to upload_max_filesize 
post_max_size = 10M 

을 설정하는 것 이름. 이 라인 filename=\".jpg\"\r\n"

이미지에 이름을 넣어하지 않았다 당신의 목표 C 코드에서

주의에/이미지/저장되지 않습니다.

$uploaddir = '/images/'; 

사용이 PHP : 잘못된 경로 $uploaddir = './images/';이어야 때문이다

내가 변경을 시도하는거야

<?php 
if(is_uploaded_file($_FILES['userfile']['tmp_name'])){ 
    echo "Temp file uploaded. \r\n"; 

    if ($_FILES['userfile']['size']> 300000) { 
     exit("Your file is too large."); 
    } 

    $uploaddir = "images/"; 
    $file = basename($_FILES['userfile']['name']); 
    $full_path = $uploaddir .$file; 

    if(move_uploaded_file($_FILES['userfile']['tmp_name'], $full_path)) { 
     echo "http://www.autograpp.com/images/{$file}" . "\r\n" . $_FILES['userfile']['size'] . "\r\n" . $_FILES['userfile']['type'] ; 
    } else { 
     echo "upload received! but process failed"; 
    } 
}else{ 
    echo "upload failure ! temp was not uploaded"; 
} 
?> 
+0

, 감사 MEDA. – JulienKP

+0

'filename = \ "your_file_name_here.jpg \"'@JulienKP – meda

+0

감사합니다 meda, 유일한 문제는 이미지가/images/폴더 안에 업로드되지 않는다는 것입니다.이 파일은 upload.php 파일과 같은 디렉토리에 저장되어 있습니다. . 왜 이런 일이 일어나는 걸까요? 다시 한 번 감사드립니다. 많은 도움을 주셨습니다. @meda – JulienKP

관련 문제