【问题标题】:Trouble Passing Variables to PHP Script on Image Upload在图像上传时将变量传递给 PHP 脚本时遇到问题
【发布时间】:2013-12-20 08:11:24
【问题描述】:

我有一个脚本可以通过 PHP 成功地将图像上传到我的服务器。上传部分有效,但我也在尝试将变量传递给正在上传图像的 PHP 脚本。

我非常有信心我的 PHP 代码很好,我只是不知道 Objective-C 出了什么问题。我还注意到我从不调用 NSData *... = [NSData dataWithContentsOfURL:[NSURL URLWithString:...]];但是不知道是不是这个问题……

NSData *data = UIImageJPEGRepresentation(twitterImage, 90);

NSString *profileId = [[NSUserDefaults standardUserDefaults] stringForKey:@"passedId"];
NSString *userId = [[NSUserDefaults standardUserDefaults] stringForKey:@"userId"];
NSString *urlString = [NSString 
stringWithFormat:@"http://www.website.com/user_photo_upload.php?
member_id=%@&profile_id=%@",userId, profileId];

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

    NSString *boundary = @"_783465873689273842734";
    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; 
    boundary=%@",boundary];
    [request setValue:contentType forHTTPHeaderField: @"Content-Type"];
    [request setValue:@"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" 
    forHTTPHeaderField:@"Accept"];
    [request setValue:@"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) 
    AppleWebKit/536.26.14 (KHTML, like Gecko) Version/6.0.1 Safari/536.26.14" 
    forHTTPHeaderField:@"User-Agent"];
    [request setValue:@"http://google.com" forHTTPHeaderField:@"Origin"];

    NSMutableData *body = [NSMutableData data];
    [body appendData:[[NSString stringWithFormat:@"Content-Length %d\r\n\r\n", [data 
    length] ] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] 
    dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; 
    name=\"picture\"; filename=\"%@.png\"\r\n", @"newfile"] 
    dataUsingEncoding:NSUTF8StringEncoding]];

    [body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" 
    dataUsingEncoding:NSUTF8StringEncoding]];

    [body appendData:[NSData dataWithData:data]];

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

    [request setHTTPBody:body];
    [request addValue:[NSString stringWithFormat:@"%d", [body length]] 
    forHTTPHeaderField:@"Content-Length"];

    NSData *returnData = [NSURLConnection sendSynchronousRequest:request 
    returningResponse:nil error:nil];
    NSString *returnString = [[NSString alloc] initWithData:returnData 
    encoding:NSUTF8StringEncoding];
    NSLog(@"%@", returnString);

我的 PHP 脚本:

<?php

    $profile_id = $_GET['profile_id'];
    $member_id = $_GET['member_id'];

    $new_file_name="$profile_id-$member_id.png";

    $target_path = "./user_photos/";  

    $target_path = $target_path . $new_file_name;  

    if(move_uploaded_file($_FILES['picture']['tmp_name'], $target_path)) {  
    echo "The file ".  basename( $_FILES['picture']['name'])." has been uploaded";  
    } else{  
    echo "There was an error uploading the file, please try again!";  
    } 
 ?>

【问题讨论】:

    标签: php ios


    【解决方案1】:

    在 Xcode 中试试这个

    -(void)postMethod   
    {   
     NSString *urlString = [NSString stringWithFormat:@"http:********web-services/register_user.php?firstname=%@&lastname=%@&email=%@&password=%@&location=india&device=IPHONE",details.fname,details.lname,details.emailAddress,details.password];   
    
     UIImage *image=details.pic;
    NSData *imageData =UIImageJPEGRepresentation(image, 0.1);
    double my_time = [[NSDate date] timeIntervalSince1970];
    NSString *imageName = [NSString stringWithFormat:@"%d",(int)(my_time)];
    NSString *string = [NSString stringWithFormat:@"%@%@%@", @"Content-Disposition: form-data; name=\"profile_pic\"; filename=\"", imageName, @".jpg\"\r\n\""];
    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:[[NSString stringWithString:string] 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*s11=   [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
    NSDictionary *responseDictionary1;
    responseDictionary1 = [XMLReader dictionaryForXMLString:s11 error:nil];
    }
    

    【讨论】:

    • 如果返回 null 请告诉我...我将分享 PHP 代码
    • PHP 代码 $uploaddir = "../images/profile_images/"; $file = basename($_FILES['image']['name']); $uploadfile = $uploaddir 。 $文件; if (move_uploaded_file($_FILES['image']['tmp_name'], $uploadfile)) { $updt_img = "UPDATE tiny_users SET profile_photo = '".$file."' WHERE user_id = '".$final_res[ 1]."'"; mysql_query($updt_img); } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    相关资源
    最近更新 更多