【发布时间】: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!";
}
?>
【问题讨论】: