2012-03-14 78 views
1

我要上傳圖片中的iPhone應用程序,以斷絕我使用下面的代碼PHP上傳圖像服務器在iPhone應用程序

但使用此代碼我收到錯誤,當我運行本地主機/ upload.php的頁面上顯示;

<?php 
    $uploaddir = 'photos/'; 
    $file = basename($_FILES['userfile']['name']); 
    $uploadfile = $uploaddir . $file; 

if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) { 
    echo "OK"; 
else { 
echo "ERROR"; 
} 

    ?> 

下面是iPhone的Xcode代碼

- (BOOL)uploadImage:(NSData *)imageData filename:(NSString *)filename{ 


     NSString *urlString = @"http://localhost/upload.php"; 

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

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

    return ([returnString isEqualToString:@"OK"]); 
     } 

調用方法

 [self uploadImage:UIImageJPEGRepresentation(imageView.image, 1.0) filename:@"pig.jpg"]; 
+0

我回答這裏 看到這個 http://stackoverflow.com/questions/8474063/how-to-upload-image-dynamically-on-server/15153502#15153502 – vinothsivanandam 2013-03-01 08:42:18

回答

0

,如果你認爲在PHP代碼錯誤,那麼第一次嘗試這種print_r($_FILES);,看看你在$_FILES['userfile']得到

+0

[正文appendData:[[的NSString stringWithString:[的NSString stringWithFormat:@「內容處置:形狀數據;命名= \ 「userfile的\」;文件名= \ 「%@ \」 \ r \ n 「個,文件名]] dataUsingEncoding:NSUTF8StringEncoding]]; 是這條線是正確的,其中文件名 – user1263350 2012-03-14 05:58:58

+0

嘗試此[身體appendData:[[的NSString stringWithFormat:@」 內容處置:form-data;命名= \ 「userfile的\」;文件名= \ 「%@ \」 \ r \ n」,文件名] dataUsingEncoding:NSUTF8StringEncoding]];和文件名是文件(即擴展名) – hchouhan02 2012-03-14 06:31:01

+0

的完整名稱,爲什麼你使用的NSString stringWithString:和NSData的dataWithData:方法 – hchouhan02 2012-03-14 06:31:41

0

試試這個,也沒有你的PHP通過查詢

    NSString *urlString = @"http://localhost/upload.php"; 

        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60]; 
        [request setHTTPMethod:@"POST"]; 

        NSString *boundary = [NSString stringWithString:@"---------------------------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:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n", filename] dataUsingEncoding:NSUTF8StringEncoding]]; 
        [body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
        [body appendData: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] autorelease]; 
相關問題