2012-07-31 72 views
0

上傳文件到http服務器時出現錯誤。下面是我使用的代碼:objective-c將png文件上傳到http

UIImage * ourImage = [UIImage imageNamed:@"tux.png"]; 
    NSData * imageData = UIImageJPEGRepresentation(ourImage, 1.0); 

    NSString *urlString = @"http://www.site.com/imageupload.php";  
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 
    [request setURL:[NSURL URLWithString:urlString]]; 
    [request setHTTPMethod:@"POST"]; 

    NSMutableData *body = [NSMutableData data]; 


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



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

    // Text parameter1 
    NSString *param1 = @"parameter text"; 
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"parameter1\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:param1] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 

    // Another text parameter 
    NSString *param2 = @"Parameter 2 text"; 
    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"parameter2\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:param2] dataUsingEncoding:NSUTF8StringEncoding]]; 
    [body appendData:[[NSString stringWithString:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]]; 

    // close form 
    [body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]]; 

    // set request body 
    [request setHTTPBody:body]; 

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

    NSLog(@"%@", returnString);  

,這是我在服務器中的public_html /目錄下的PHP文件。文件名是imageupload.php。我正嘗試通過HTTP上傳圖片文件,而不是使用任何名稱或密碼登錄。我不熟悉PHP,真的需要一些幫助。謝謝。

<?php 
    $uploaddir = '/public_html/upload'; 
    $file = basename($_FILES['userfile']['name']); 
    $uploadFile = $file; 
    $randomNumber = rand(0, 99999); 
    $newName = $uploadDir . $uploadFile; 
    if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { 
    echo "Temp file uploaded. \r\n"; 
    } else { 
    echo "Temp file not uploaded. \r\n"; 
    } 

    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.iroboticshowoff.com/dir/{$file}" . "\r\n" . $_FILES['userfile'] 
     ['size'] . "\r\n" . $_FILES['userfile']['type'] ; 
    } 
    ?> 

,這是我從服務器取回的錯誤,當我執行的代碼:

2012-07-31 10:04:24.576 FTP6 [3600:F803]
PHP錯誤消息
解析錯誤:語法錯誤,在/home/a5054180/public_html/imageupload.php意外T_STRING上線

免費虛擬主機ing

加上其他錯誤。任何人都可以嘗試一下,讓我知道我能做些什麼來解決它。非常感謝,謝謝。

回答

0

我沒有測試你的腳本,但我想你應該改變你的內容處理和Content-Type到:

內容處置:表單數據; NAME = 「userfile的」;文件名=「front.png」 內容類型:圖片/ PNG

你知道該程序查爾斯?這非常有幫助。它是一個代理,可幫助您分析您的請求和服務器響應。

http://www.charlesproxy.com/